Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

juliano.ma

Recuperar valor do DB em menu de lista

Recommended Posts

Bom dia amigos!

 

tenho o seguinte script:

 

<?php include("../config.php");echo "<select name=\"cidade\">";$sql=mysql_query("SELECT * FROM cidades ORDER BY cidade ASC");while($linha=mysql_fetch_array($sql)) {echo"<option value=\"$linha[1]\">$linha[1]</option>";}echo "</select>";?>

 

Eu tenho uma tabela "CIDADES" e uso ela na hora de cadastrar um cliente.

 

Como faço para recuperar a cidade pré-cadastrada (deixar ela selecionada na combo) quando eu for editar os dados do cliente?

 

Dei uma lida sobre if e else mas não consegui implementar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai comparar com IF mesmo...

 

PHP
while($linha=mysql_fetch_array($sql)) {

     if ($linha[1] == $cidade_selecionada) {

          echo"<option value="$linha[1]" selected>$linha[1]</option>";

          } else {

               echo"<option value="$linha[1]">$linha[1]</option>";

     }

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei assim, mas não funcionou:

 

PHP
<?php

include("../config.php");

 

$pegaCliente = mysql_query("SELECT * FROM clientes WHERE id = '" . $id . "'") or die ("ERRO!");

 

$dados = mysql_fetch_array($pegaCliente);

 

$cidade = $dados["cidade"];

 

 

echo "<select name="cidade">";

 

$sql=mysql_query("SELECT * FROM cidades ORDER BY cidade ASC");

 

while($linha=mysql_fetch_array($sql)) {

 

     if ($linha[1] == $cidade) {

 

          echo"<option value="$linha[1]" selected>$linha[1]</option>";

 

          } else {

 

               echo"<option value="$linha[1]">$linha[1]</option>";

     }

}

echo "</select>";

?>

 

Estou tendo dificuldades pelo seguinte, a cidade selecionada está na tabela CLIENTES e a as outras cidades da combo eu populo com a tabela CIDADES.

 

Eu penso que teria que pegar pela id a cidade que esta cadastrada em CLIENTES

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo...

 

digamos que sua estrutura seja a seguinte...

 

clientes

cli_id

cli_nome

cid_id

cli_endereco

 

 

cidades

cid_id

cid_cidade

 

 

Quando você for mandar ele verificar ali naquele IF, você manda ele verificar se o CID_ID da tabela do cliente é = a CID_ID da tabela da cidade... dai sendo ele imprime aquele com selected

 

 

exemplo nessa estrutura de tabelas que eu passei:

PHP
<?php

     $sql = mysql_query("SELECT cid_id FROM clientes");

     $aux = mysql_fetch_array($sql);

     $cidade_cliente = $aux["cid_id"];

 

     echo "<select name="cidade">";

     $sql_cidade = mysql_query("SELECT * FROM cidades ORDER BY cidade ASC");

     while($linha=mysql_fetch_array($sql)) {

          if ($linha[0] == $cidade_cliente) {

               echo"<option value="$linha[1]" selected>$linha[1]</option>";

               } else {

                    echo"<option value="$linha[1]">$linha[1]</option>";

          }

     }

     echo "</select>";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta dando um erro em:

 

PHP
echo "<select name="cidade">";

 

echo"<option value="$linha[1]" selected>$linha[1]</option>";

 

echo"<option value="$linha[1]">$linha[1]</option>";

 

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\Arquivos de programas\xampp\htdocs\crm\edit_cliente\alterar_cliente.php on line 93

 

 

Coloquei uma "\" antes das aspas deixando estas linha assim:

 

echo "<select name=\"cidade\">";echo"<option value=\"$linha[1]\" selected>$linha[1]</option>";echo"<option value=\"$linha[1]\">$linha[1]</option>";
Só que agora ele não retornou nada, nem as cidades da combo.

 

No meu formulário de edição de clientes pega o ID de uma url assim:

 

<?php echo "<a href='alterar_cliente.php?id=$id'>Alterar</a>"; ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, agora está quase funcionando perfeitamente.

 

tinha apenas alguns erros que não tinha percebido tipo $sql ao invés de $sql_cidade e também $linha[0] ao invés de $linha[1]

 

Veja como ficou o código completo:

 

<?phpinclude("../config.php");	 $sql = mysql_query("SELECT cidade FROM clientes");	 $aux = mysql_fetch_array($sql);	 $cidade_cliente = $aux["cidade"];	 echo "<select name=\"cidade\">";	 $sql_cidade = mysql_query("SELECT * FROM cidades ORDER BY cidade ASC");	 while($linha=mysql_fetch_array($sql_cidade)) {		  if ($linha[1] == $cidade_cliente) {			   echo"<option value=\"$linha[1]\" selected>$linha[1]</option>";			   } else {					echo"<option value=\"$linha[1]\">$linha[1]</option>";		  }	 }	 echo "</select>";?>

 

 

na verdade funcionou, mas ele seleciona a cidade do primeiro cliente do BD no caso o que tem a ID mai baixa...

 

Por que será?

Compartilhar este post


Link para o post
Compartilhar em outros sites

simplificando

 

PHP
<select name="cidades">

 

<?php

  // para começar, voce precisa do id de algum cliente para mostrar a sua cidade em particular

  $clienteID = 1

  // Abaixo a query para saber a cidade dele

  $query_cidade = "SELECT cidade FROM clientes WHERE id='$clienteID'" ;

  $result_cidade = mysql_query($query_cidade);

  $cidadeCliente = mysql_fetch_array($result_cidade);

  // Abaixo a query pra mostrar todas as cidades

  $result_cidades = mysql_query("SELECT * FROM cidades ORDER BY cidade ASC");

  // Agora o while, note eu deixei ele aberto para por o codigo html fora dos echos

  while($cidades = mysql_fetch_array($result_cidades))

    {

?>

 

 <option value="<?php echo $cidades[id] ; ?>" <?php if($cidades[nome] == $cidadeCliente['cidade']) { echo "SELECTED" ;}; ?>> <?php echo $cidades[nome] ; ?> </option>

 

<?php

   // Aqui eu fecho o while

    };

?>

 

 

</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

LeonardoAP, Obrigado por ter respondido.

 

Tentei dessa forma também e não funcionou, mesmo corrigindo o ";" que faltou no final da linha " $clienteID = 1".

 

Tentei concatenar também o id='".$clienteID."', mas mesmo assim não deu.

 

Desta forma ele apenas está mostrando a combo vazia e sem valor algum.

 

Meu banco esta assim:

 

Tabela "CLIENTES"

-> id

-> nome

-> cidade

-> etc etc

 

Tabela "CIDADES"

-> id

-> cidade

 

Grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa eu insistir pessoal, mas é que realmente estou precisando disso. Dos posts que encontrei neste fórum (e em outros também) com assunto similar todos não foram concluídos. Eu penso que se conseguisse resolver isso com a ajuda dos colegas o script ficaria de exemplo para aqueles que futuramente precisassem. Inclusive eu postei em mais dois fóruns importantes iguais a esse mas não não consegui resolver por lá também.Deve ser algum detalheque está passando desapercebido.Grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, tenta mudar a variavel $cidades[nome] por $cidades[cidade], ficaria assim:

 

PHP
<select name="cidades">

 

<?php

  // para começar, voce precisa do id de algum cliente para mostrar a sua cidade em particular

  $clienteID = 1 ;

  // Abaixo a query para saber a cidade dele

  $query_cidade = "SELECT cidade FROM clientes WHERE id='$clienteID'" ;

  $result_cidade = mysql_query($query_cidade);

  $cidadeCliente = mysql_fetch_array($result_cidade);

  // Abaixo a query pra mostrar todas as cidades

  $result_cidades = mysql_query("SELECT * FROM cidades ORDER BY cidade ASC");

  // Agora o while, note eu deixei ele aberto para por o codigo html fora dos echos

  while($cidades = mysql_fetch_array($result_cidades))

    {

?>

 

 <option value="<?php echo $cidades[id] ; ?>" <?php if($cidades[cidade] == $cidadeCliente['cidade']) { echo "SELECTED" ;}; ?>> <?php echo $cidades[cidade] ; ?> </option>

 

<?php

   // Aqui eu fecho o while

    };

?>

 

 

</select>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa, já melhorou esse modelo de script, pois com $cidades[nome] não listava nada e agora com $cidades[cidade] lista todas as cidades normalzinho, mas ainda não seleciona a que está no cadastro do cliente. Ela seleciona a primeira da lista.

 

será que eu não deveria pegar o ID assim?

 

PHP
$sql = "SELECT * FROM clientes WHERE id='$_GET[id]'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puxa consegui!!!!!!!

 

Eba!!!!!

 

Olha só como ficou o script:

 

PHP
<select name="cidades">

<?php

include("../config.php");

  // para começar, voce precisa do id de algum cliente para mostrar a sua cidade em particular

 

  // Abaixo a query para saber a cidade dele

  $query_cidade = "SELECT cidade FROM clientes WHERE id='$_GET[id]'" ;

  $result_cidade = mysql_query($query_cidade);

  $cidadeCliente = mysql_fetch_array($result_cidade);

  // Abaixo a query pra mostrar todas as cidades

  $result_cidades = mysql_query("SELECT * FROM cidades ORDER BY cidade ASC");

  // Agora o while, note eu deixei ele aberto para por o codigo html fora dos echos

  while($cidades = mysql_fetch_array($result_cidades))

    {

?>

 

 <option value="<?php echo $cidades[cidade] ; ?>" <?php if($cidades[cidade] == $cidadeCliente['cidade']) { echo "SELECTED" ;}; ?>> <?php echo $cidades[cidade] ; ?> </option>

 

<?php

   // Aqui eu fecho o while

    };

?>

 

</select>

 

Tudo funcionando redondinho....

 

Muitíssimo obrigado LeonardoAP, tenho certeza que será de grande valia esse script para outras pessoas!

 

grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

:) denada, mas veja que eu apenas usei aquele $clienteID para fazer a pesquisa, se voce usar o $_GET[id], não precisará usar o $clienteID, pode apagar ele

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.