Ir para conteúdo

Arquivado

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

Naty_Za

Busca com estado e cidade

Recommended Posts

Pessoal, sabe aquele esquema de busca q tem 2 caixas, a 1ª com os estados, daí qdo você seleciona um estado, a caixa do lado já mostra as cidades daquele determinado estado..

 

então, eu queria fazer isso...

 

tipo, no banco criei uma tabela "estados" com os campos:

"id"

"nome"

 

e outra tabela "cidades" com os campos:

"id"

"id_estado"

"nome"

 

e já fui escrevendo, separando qual cidade é de qual estado....

 

agora só preciso linkar no codigo q quando selecionar um estado, só mostre na caixa do lados, as cidades dele...

 

mas como???????

 

to postando meu código... me ajudem, por favor!!

 

Valeuu

 

<table width="759" border="1" cellpadding="2" cellspacing="0" bordercolor="#E6E6E6">	<tr valign="top"> 	  <td colspan="2"> </td>	</tr>	<tr valign="top"> 	  <td width="751" align="left" valign="top" bgcolor="#F8F8F8"><span class="style10"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Buscar 		Cadastro</font></strong><br>		</span> <form name="form1" method="post" action="teste2.php">		  <div align="center"> 			<p> 			  <input name="palavra" type="text" id="palavra">			  <strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 			  <select name="estados" size="1" id="estados">				<option value="<? echo "$id"; ?>">- Todos os Estados -</option>				<?php// conexao com o banco de dados aqui....$sql = mysql_query("SELECT * FROM estados ORDER BY nome ASC");while($dados = mysql_fetch_array($sql)) { echo' <option value="'.$dados['id'].'">'.$dados['nome'].'</option> ' . "\r\n";}?>			  </select>			  </font></strong><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 			  <select name="cidade" size="1" id="cidade">				<option value="<? echo "$id"; ?>">- Cidade -</option>				<?php// conexao com o banco de dados aqui....$sql = mysql_query("SELECT * FROM cidades ORDER BY nome ASC");while($dados = mysql_fetch_array($sql)) { echo' <option value="'.$dados['id'].'">'.$dados['nome'].'</option> ' . "\r\n";}?>			  </select>			  </font></strong><br>			  <input type="submit" name="Submit" value="Buscar">			</p>		  </div>		</form></td>	 	</tr>	<tr valign="top"> 	  <td colspan="2" align="left" valign="top" bgcolor="#F8F8F8"> 		<div align="center">		  <? if(!empty($_POST["palavra"])) {$palavra = str_replace(" ", "%", $_POST["palavra"]); // Altera os espaços adicionando no lugar o simbolo %$estados = $_POST['estados'];if (empty($estados)) {   $qr = "SELECT * FROM cadastros WHERE titulo LIKE '%".$palavra."%' or servicos LIKE '%".$palavra."%' or palavras LIKE '%".$palavra."%' ORDER BY titulo ASC";} else {   $qr = "SELECT * FROM cadastros WHERE titulo LIKE '%".$palavra."%' or servicos LIKE '%".$palavra."%' or palavras LIKE '%".$palavra."%'and id_estado = '$estados' ORDER BY titulo ASC";// definimos para buscar no campo1 e ordenar pelo campo que você quiser.}$sql = mysql_query($qr) or die (mysql_error()); // Executa a query no Banco de Dados $total = mysql_num_rows($sql); // Conta o total de resultados encontrados echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=2>Sua busca retornou <b>$total</b> resultados.</font><br><br>\n"; // mostra quantos resultados retornou e logo depois exibewhile ($dados = mysql_fetch_array($sql)) {$campo1 = $dados["titulo"];$campo2 = $dados["servicos"];$campo3 = $dados["id_cat"];$campo4 = $dados["cliques"];$campo5 = $dados["id"];$campo6 = $dados["http"];$campo7 = $dados["endereco"];$campo8 = $dados["email"];$campo9 = $dados["tel"];echo"<font face=Verdana, Arial, Helvetica, sans-serif><strong><font size=1><a href=\"$campo6\" target=\"_blank\" >$campo1</strong></a></font><br><i>Serviços: $campo2</i><BR>Endereço: $campo7<BR>Tel: $campo9<BR>Email: <a href=mailto:$campo8>$campo8</a><BR><BR>";} } ?>		</div></td>	</tr>  </table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amiga,eu conheço uma maneira um pouco simples para fazer o que você quer:- faça a 1ª caixa com os estados. Nesta caixa terá um "onexit" ou um "onclick" que vai dar um reload na pagina, enviando o codigo do estado pelo outro form, onde na segunda caixa (cidades) irá buscar pelo select atraves do codigo do estado que o usuario escolheu na caixa anterior! :)sem dar reload eu to atras tbm! :)Espero ter ajudado! :)Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Pedro... mas como ficaria o código se fizer assim????sou iniciante em PHP, e ñ sei programar quase nada!!!Se puder me ajudar...Valeuuu

Compartilhar este post


Link para o post
Compartilhar em outros sites

óh consegui fazer....

 

fiz atualizando a página toda com um "onChange" no "select..

 

ficou assim:

 

<table width="759" border="1" cellpadding="2" cellspacing="0" bordercolor="#E6E6E6">	<tr valign="top"> 	  <td colspan="2"> </td>	</tr>	<tr valign="top"> 	  <td width="751" align="left" valign="top" bgcolor="#F8F8F8"><span class="style10"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Buscar 		Cadastro</font></strong><br>		</span> <form name="form1" method="post" action="teste2.php">		  <div align="center"> 			<p> <strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 			  <select name="estados" size="1" id="estados" onChange="location.href = '<? echo $_SERVER["PHP_SELF"]; ?>?estado=' + this.value;">				<option value="<? echo "$id"; ?>">- Todos os Estados -</option>				<?php// conexao com o banco de dados aqui....$sql = mysql_query("SELECT * FROM estados ORDER BY nome ASC");while($dados = mysql_fetch_array($sql)) {$sel = ($_GET["estado"] == $dados['id']) ? "selected" : "";   echo' <option value="' . $dados['id'] . '"' . $sel . '>'.$dados['nome'].'</option> ' . "\r\n";}?>			  </select>			  <select name="cidade" size="1" id="cidade">				<option value="<? echo "$id"; ?>" selected>- Cidades -</option>				<?php// conexao com o banco de dados aqui....$sql = mysql_query("SELECT * FROM cidades WHERE id_estado='" . $_GET["estado"] . "' ORDER BY nome ASC");while($dados = mysql_fetch_array($sql)) { echo' <option value="' . $dados['id'] . '">' . $dados['nome'] . '</option> ' . "\r\n";}?>			  </select>			  </font></strong>			  <input name="palavra" type="text" id="palavra">			  <br>			  <input type="submit" name="Submit" value="Buscar">			</p>		  </div>		</form></td>	 	</tr>	<tr valign="top"> 	  <td colspan="2" align="left" valign="top" bgcolor="#F8F8F8"> 		<div align="center">		  <? if(!empty($_POST["palavra"])) {$palavra = str_replace(" ", "%", $_POST["palavra"]); // Altera os espaços adicionando no lugar o simbolo %$estados = $_POST['estados'];if (empty($estados)) {   $qr = "SELECT * FROM cadastros WHERE endereco LIKE '%".$palavra."%' or servicos LIKE '%".$palavra."%' or palavras LIKE '%".$palavra."%' ORDER BY endereco ASC";} else {   $qr = "SELECT * FROM cadastros WHERE endereco LIKE '%".$palavra."%' or servicos LIKE '%".$palavra."%' or palavras LIKE '%".$palavra."%'and id_estado = '$estados' ORDER BY endereco ASC";// definimos para buscar no campo1 e ordenar pelo campo que você quiser.}$sql = mysql_query($qr) or die (mysql_error()); // Executa a query no Banco de Dados $total = mysql_num_rows($sql); // Conta o total de resultados encontrados echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=2>Sua busca retornou <b>$total</b> resultados.</font><br><br>\n"; // mostra quantos resultados retornou e logo depois exibewhile ($dados = mysql_fetch_array($sql)) {$campo1 = $dados["titulo"];$campo2 = $dados["servicos"];$campo3 = $dados["id_cat"];$campo4 = $dados["cliques"];$campo5 = $dados["id"];$campo6 = $dados["http"];$campo7 = $dados["endereco"];$campo8 = $dados["email"];$campo9 = $dados["tel"];echo"<font face=Verdana, Arial, Helvetica, sans-serif><strong><font size=1><a href=\"$campo6\" target=\"_blank\" >$campo1</strong></a></font><br><i>Serviços: $campo2</i><BR>Endereço: $campo7<BR>Tel: $campo9<BR>Email: <a href=mailto:$campo8>$campo8</a><BR><BR>";} } ?>		</div></td>	</tr>  </table>

mas agora surge um outro probleminha.. meu sistema de busca tá assim:

 

a caixa para escolher o estado, daí do lado, escolhe a cidade, depois tem o campo de escrever o que quer buscar..

 

só que tem algumas formas que a pesquisa ñ completa... volta 0..

 

eu queria que funcionasse a busca de todas as formas... tipo assim:

 

se a pessoa escolher só o estado e ñ escrever nada, e clicar em buscar, queria voltasse com todos os resultados daquele estado...

 

se escolher o estado e a cidade sem escrever nada, que voltasse com todos os resultados daquela cidade..

 

se só escrever o que quer buscar, sem selecionar nenhum estado e cidade, que volte com todos os resultados daquilo que ela buscou, de todos os estados e cidades, afinal, ela ñ especificou nenhum!!

 

se escrever o que quer buscar, e selecionar o estado e cidade, que volte o resultado do que buscou na cidade que buscou..

 

é só funcionar certinho....

 

eu sei que eu teria que testar as variáveis (if/else) para ver quais estão vazias e no final montar a query com o que vir...

 

mas como??? sei na teoria, mas ñ consigo colocar na prática..

 

já postei o código... me ajudem, por favor!!!

 

valeuuu

Compartilhar este post


Link para o post
Compartilhar em outros sites

use if pra fazer isso, não vi o código seu mais a logica é:if ($cidade_escolhida == 0){ echo $mostra_estado_todo;}essa é a lógica, agora você usa do jeito que você está fazendo

Compartilhar este post


Link para o post
Compartilhar em outros sites

use if pra fazer isso, não vi o código seu mais a logica é:

 

if ($cidade_escolhida == 0){

echo $mostra_estado_todo;

}

 

essa é a lógica, agora você usa do jeito que você está fazendo

 

estou com esta mesma dúvida...

espero que alguém nos ajude.

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.