Fórum Update em campos Select #424543
24/09/2012
0
tenho um Cadastro de Categorias, e um Cadastro de SubCategorias, que faz referencia a tabela categorias.. até ai tranquilo
no Cadastro de SubCategorias tenho as seguintes opções
Categoria (E Aqui um Campo do tipo <select com as opcoes que listo do BD)
Sub Categoria (E um input text que vai o nome da SubCategoria)
Quando vou altera o Registro, trago o Campo subcategoria, com a categoria que foi Cadastrada anteriormente
e para vir selecionado o campo select com o registro correto que ja havia cido cadastrado faço o seguinte
<?php
$id = $_GET["id"]; //Recupero o ID da subcategoria que estou alterando
include "conecta.php";
$subcategoria = mysql_query("select * from subcategorias where id = '$id'");
$exibenoform = mysql_fetch_array($subcategoria);
$categorias = mysql_query('select * from categorias'); //Busco todas as Categorias para Lista-las
$categoriaSelecionada = mysql_query("select * from categoria where id = '".$exibenoform["idcategoria"]."'"); //Busco a Categoria que foi cadastrada no Registro atual
$catselecionada = mysql_fetch_array($categoriaSelecionada);
?>
<form .......>
SubCategoria<input type="text" name="subcat"><br>
<select name="categoria">
<?php
while ($listacategorias = mysql_fetch_array($categorias)){
if ($listacategorias["id"]==$$catselecionada["id"]){
$selecionada = 'select="selected"';
}
echo '<option value="'.$listacategoria["id"].' $selecionada">'.$listacategoria["categoria"].'</option>'
}
?>
</select>
queria saber se alguém conhece uma maneira mais coerente de fazer essa listagem, com o item que ja esta gravado no BD selecionado, pois tenho a impressão de que essa maneira não é a correta de se fazer isso!
Abraços!
André Macedo
Curtir tópico
+ 0Post mais votado
15/10/2012
FROM subCategoria
Eduardo Oliveira
Gostei + 1
Mais Posts
24/09/2012
Claudia Nogueira
Gostei + 0
25/09/2012
André Macedo
MAs parece estranho não?? você tem MSN ou SKYPE?
Gostei + 0
26/09/2012
Alisson Santos
<form action="altera.php" method="post">
<input type="hidden" name="id" value="<?php echo $id ?>">
SubCategoria<input type="text" name="subcat"><br>
<select name="categoria">
<?php
while ($listacategorias = mysql_fetch_array($categorias)){
if ($listacategorias["id"]==$$catselecionada["id"]){
$selecionada = 'select="selected"';
}
echo '<option value="'.$listacategoria["id"].' $selecionada">'.$listacategoria["categoria"].'</option>'
}
?>
</select><br />
<input type="submit" value="alterar">
Agora faça a pagina altera.php recebendo por post todo o formulario e fazendo update somente na subcategoria onde o ID é o que foi resgatado pelo Post.
Gostei + 0
15/10/2012
Eduardo Oliveira
Se sim, utilize join e junte suas tabelas e terás um código bem mais limpo e sem verificação(if~else) dentro do while.
SELECT categoria.*, subCategoria.* FROM categoria, subCategoria JOIN categoria ON categoria.idCategoria = subCategoria.idCategoria WHERE categoria.idCategoria = '$id'
Essa consulta elimina boa parte de seu código, não sendo mais preciso fazer isso :
$subcategoria = mysql_query("select * from subcategorias where id = '$id'");
$exibenoform = mysql_fetch_array($subcategoria);
$categorias = mysql_query('select * from categorias'); //Busco todas as Categorias para Lista-las
$categoriaSelecionada = mysql_query("select * from categoria where id = '".$exibenoform["idcategoria"]."'"); //Busco a Categoria que foi cadastrada no Registro atual
$catselecionada = mysql_fetch_array($categoriaSelecionada);
Isso ficaria assim com a consulta que proponho que você faça:
$categoriaSelecionada = mysql_query('
SELECT categoria.*, subCategoria.*
FROM categoria, subCategoria
JOIN categoria ON categoria.idCategoria = subCategoria.idCategoria
WHERE
categoria.idCategoria = "$id"
');
$catselecionada = mysql_fetch_array($categoriaSelecionada);
Após seu while dentro do select, voce pode retirar isso também
if ($listacategorias["id"]==$$catselecionada["id"])
Pois a própria consulta já faz essa verificação.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)