Update em campos Select

24/09/2012

0

PHP

Boa noite pessoal.. tenho uma Dúvida em relação a maneira como devo proceder em uma alteração de registros em PHP

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

André Macedo

Responder

Post mais votado

15/10/2012

Apenas uma correção, no FROM você especifica somente a tabela que possui o relacionamento.

FROM subCategoria

Eduardo Oliveira

Eduardo Oliveira
Responder

Mais Posts

24/09/2012

Claudia Nogueira

Eu também faço dessa forma, mas não sou a mais expert em PHP.
Responder

25/09/2012

André Macedo

Eu também faço dessa forma, mas não sou a mais expert em PHP.


MAs parece estranho não?? você tem MSN ou SKYPE?
Responder

26/09/2012

Alisson Santos

Verifique se esse procedimento lhe auxilia
<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.
Responder

15/10/2012

Eduardo Oliveira

Você quer editar uma sub-categoria se baseando em sua categoria???
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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar