Update em campos Select
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
Post mais votado
15/10/2012
FROM subCategoria
Eduardo Oliveira
Mais Posts
24/09/2012
Claudia Nogueira
25/09/2012
André Macedo
MAs parece estranho não?? você tem MSN ou SKYPE?
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.
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.
Clique aqui para fazer login e interagir na Comunidade :)