Ir para conteúdo

POWERED BY:

Arquivado

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

LEONARDO SENHORINI

Busca Selecionando Estado e Cidade

Recommended Posts

TO PRECISANDO ARRUMAR DE FORMA QUE E

seleciono primeiro o estado e aparece somente a cidade que esta cadastrado neste estado

E PRECISO FAZER COM QUE A BUSCA ACONTECA NORMALMENTE NO BANCO DE DADOS

 

AGRADECO NOVAMENTE

OBRIGADO

 

banco de dados

 

CREATE TABLE IF NOT EXISTS `estado` (
 `id_estado` int(6) NOT NULL auto_increment,
 `estado` varchar(255) collate latin1_general_ci NOT NULL default '',
 `nome` varchar(20) collate latin1_general_ci NOT NULL,
 PRIMARY KEY  (`id_estado`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;



CREATE TABLE IF NOT EXISTS `cidade` (
 `id_cidade` int(6) NOT NULL auto_increment,
 `id_estado` int(6) NOT NULL,
 `cidade` varchar(255) collate latin1_general_ci NOT NULL default '',
 `estado` varchar(6) collate latin1_general_ci NOT NULL,
 PRIMARY KEY  (`id_cidade`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;

 

formulario somente por cidade, tem que colocar o estado

 

<td rowspan="2"> <form method="post" action="busca.php"  target="_top">
         <div align="center"> 
           <h5> 
             <input type="text" name="busca"  size="70">
             <br />
             <span class="style1">Buscar em: </span> 
             <select name="cidade" id="cidade">
               <? $sql = mysql_query("SELECT cidade FROM cidade");
while ($coluna = mysql_fetch_array($sql)) { ?>
               <option value="<?=$coluna[cidade];?>">
               <?=$coluna[cidade];?>
               </option>
               <? } ?>
             </select>
             <input type="button" Value="Buscar"  onClick="verifica(this.form);" size="13" name="ok">
           </h5>
         </div>
       </form></td>

 

arquivo busca

 

<?php

$busca = $_POST['busca'];// palavra que o usuario digitou
$modelo = $_POST['cidade']; //categoria que o usuario deseja

$sql = mysql_query("SELECT * FROM cadastro WHERE (nome LIKE '%$busca%' OR titulo LIKE '%$busca%') AND cidade = '$cidade' ORDER BY ativa DESC"); 

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

       ?> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conhece ou já ouviu falar sobre Ajax?

É a forma mais simples de fazê-lo.

 

Se não, terá que fazer um formulário "em dois passos", onde o usuário primeiro seleciona o estado, depois envia esse formulário, que retorna uma página contendo as cidades cadastradas naquele estado e o restante do formulário. Se o usuário escolheu errado, aí tem que voltar, utilizando o histórico do navegador. Complicado...

 

Para fazer em Ajax, tem um ótimo tutorial do W. Bruno, também moderador aqui do fórum:

:seta: http://wbruno.com.br/blog/2009/10/06/combos-dependentes-ajax-jquery/

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz mas nao esta buscando no banco de dados

SE ALGUEM PODER ME AJUDAR

PQ A FUNCAO DE ESTADO E CIDADE ESTA FUNCIONANDO CERTINHO BUSCANDO NO BANCO DE DADOS

 

www.senhoriniartedesign.com.br/sistema/index1.php

 

busca.php

 

<?php

$busca = $_POST['busca'];// palavra que o usuario digitou
$modelo = $_POST['modelo']; //cidade
$estado = $_POST['estado']; //estado

$sql = mysql_query("SELECT * FROM cadastro WHERE (nome LIKE '%$busca%' OR titulo LIKE '%$busca%') AND modelo = '$modelo' AND estado = '$estado' ORDER BY ativa DESC"); 

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

       ?>
   <td width="444"> <table width="86%"  border="0" align="center" cellpadding="3" cellspacing="0" bgcolor="#<?=$coluna[cor];?>">
       <tr> 
         <td width="10%" rowspan="5"><b><a href="javascript:Abrir('fotos_frame.php?id_cadastro=<?=$coluna[id_cadastro];?>');"><img src="<?=$coluna[destaque];?>" border="0"></a></b></a></td>
         <td colspan="3"><span class="style2"> <img src="images/topo_galeria_05.jpg" width="8" height="8"> 
           <?=$coluna[nome];?>
           </span></td>
       <tr> 
         <td colspan="3"><span class="style2"><img src="images/topo_galeria_05.jpg" width="4" height="4"> 
           <?=$coluna[tipo];?>
           <?=$coluna[endereco];?>
           , 
           <?=$coluna[numero];?>
           </span></td>
       <tr> 
         <td width="44%"><span class="style2"> Bairro: 
           <?=$coluna[bairro];?>
           </span></td>
         <td width="25%"><span class="style2"> 
           <?=$coluna[modelo];?>
           </span></td>
         <td width="21%"><span class="style2"> Estado: 
           <?=$coluna[estado];?>
           </span></td>
       <tr> 
         <td><span class="style2"> Fone: 
           <?=$coluna[fone];?>
           </span></td>
         <td> </td>
         <td> </td>
       <tr> 
         <td colspan="3"><strong>Mapa: <a href="javascript:Abrir('mapa1.php?id_cadastro=<?=$coluna[id_cadastro];?>');"><img src="images/icone-mapa.jpg" width="20" height="19" border="0"></a></strong></td>
       <tr> 
         <td colspan="4"><b><img src="images/topo_galeria_05.jpg" width="383" height="3"></b></td>
     </table></td>
   <? $contx++;
  if ($contx==2){ echo "</tr><tr>"; $contx=0; }

}  // -------- FIM DO WHILE ----------------------------------------------------------------------------
?>

 

 

function.inc.php

 

<?php
       header("Content-Type: text/html; charset=ISO-8859-1");

       function intGet( $campo ){
               return isset( $_GET[$campo] ) ? (int)$_GET[$campo] : 0;
       }   	
       function retorno( $id )
       {
               $sql = "SELECT `id`, `nome` 
                       FROM `modelo` 
                       WHERE `idestado` = {$id} ";
               $sql .= "ORDER BY `nome` ";


               $mysqli = new mysqli("localhost", "senhorin_senhori", "lems1717", "senhorin_getep");
               //$con = mysql_connect('localhost', 'root', '123');
               //mysql_select_db( 'ajax', $con );


               $q = $mysqli->query( $sql ); 
               //$q = mysql_query( $sql );


               $json = ' [';
               if( $q->num_rows > 0 )
               //if( mysql_num_rows( $q ) > 0 )
               {
                       while( $dados = $q->fetch_object() )
                       //while( $dados = mysql_fetch_assoc( $q ) )
                       {
                               $json .= '{"nome'.$campo.'":"'.$dados->nome.'","id'.$campo.'":"'.$dados->id.'"}, ';
                               //$json .= '{"nome'.$campo.'":"'.$dados['nome'].'","id'.$campo.'":"'.$dados['id'].'"}, ';
                       }
               }
               else
                       $json .= '{"nome'.$campo.'": "Não Encontrado"}';

               $json .= ']';

               return $json;
       }

       echo retorno( intGet('idestado') );
	?>

 

 

index.php

 

 

<? include "dbconfig.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {font-family: Arial, Helvetica, sans-serif}
-->
</style>
</head>
<script type="text/javascript">
function verifica(theForm) {
   if(theForm.busca.value==""){
       alert("Erro! O Campo \"Busca\" está em branco!");
       return false;
   }
   theForm.submit();
}
</script>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
       <script type="text/javascript">
       $(document).ready(function(){//inicio o jQuery
               $("select[name='estado']").change(function(){
               var idestado = $(this).val();//pegando o value do option selecionado
               //alert(idestado);//apenas para debugar a variável

                       $.getJSON(//esse método do jQuery, só envia GET
                               'function.inc.php',//script server-side que deverá retornar um objeto jSON
                               {idestado: idestado},//enviando a variável

                               function(data){
                               //alert(data);//apenas para debugar a variável

                                       var option = new Array();//resetando a variável

                                       resetaCombo('modelo');//resetando o combo
                                       $.each(data, function(i, obj){

                                               option[i] = document.createElement('option');//criando o option
                                               $( option[i] ).attr( {value : obj.id} );//colocando o value no option
                                               $( option[i] ).append( obj.nome );//colocando o 'label'

                                               $("select[name='modelo']").append( option[i] );//jogando um à um os options no próximo combo
                               });
                       });
               });
       }); 	

       /* função pronta para ser reaproveitada, caso queira adicionar mais combos dependentes */
       function resetaCombo( el )
       {
               $("select[name='"+el+"']").empty();//retira os elementos antigos
               var option = document.createElement('option');                                  
               $( option ).attr( {value : '0'} );
               $( option ).append( 'Escolha' );
               $("select[name='"+el+"']").append( option );
       }
       </script>
<body>
<div align="center">
 <table width="976" border="0">
   <tr> 
     <td colspan="3"> </td>
   </tr>
   <tr> 
     <td height="155" colspan="3"><div align="center"><a href="index.php"><img src="images/log.png" width="243" height="129" border="0" /></a></div></td>
   </tr>
   <tr> 
     <td width="288"> </td>
     <td width="420"><h5 class="style1">Localize empresas ou serviços</h5></td>
     <td width="254"> </td>
   </tr>
   <tr> 
     <td> </td>
     <td rowspan="2"> <form method="post" action="busca.php"  target="_top">
         <div align="center"> 
           <h5> 
             <input type="text" name="busca"  size="70">
             <br />
             <span class="style1">Buscar em: </span> 
             <fieldset>
             <label>
             </label>
             <label> </label>
             <fieldset>
             <label>
             <select name="estado">
               <option value="0">Escolha</option>
               <option value="1">MG</option>
               <option value="2">RO</option>
             </select>
             </label>
             <label>
             <select name="modelo">
               <option value="0">Escolha</option>
             </select>
             </label>
             </fieldset>
             <label> </label>
             </fieldset>
             <input type="button" Value="Buscar"  onClick="verifica(this.form);" size="13" name="ok">
           </h5>
         </div>
       </form></td>
     <td> </td>
   </tr>
   <tr> 
     <td> </td>
     <td> </td>
   </tr>
   <tr> 
     <td rowspan="3"> </td>
     <td> </td>
     <td rowspan="3"> </td>
   </tr>
   <tr> 
     <td> </td>
   </tr>
   <tr> 
     <td align="center"><h6 class="style1">Desenvolvido por: <a href="http://www.mescomunicacao.com.br" target="_blank">M&S 
         Comunicação Visual</a> </h6></td>
   </tr>
 </table>
</div>
</body>
</html> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tive fazendo uns teste

 

nesta linha estava assim

 

$sql = mysql_query("SELECT * FROM cadastro WHERE (nome LIKE '%$busca%' OR titulo LIKE '%$busca%') AND modelo = '$modelo' ORDER BY ativa DESC"); 

deixando assim ele busca em todas as cidades

acho que o problema esta aqui somente

$sql = mysql_query("SELECT * FROM cadastro WHERE (nome LIKE '%$busca%' OR titulo LIKE '%$busca%') ORDER BY ativa DESC"); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou explicar

 

e porque a busca se baseia no comando selecionar a cidade e estado ao mesmo tempo no banco de dados

usando o jquery-1.3.2.min.js

 

como sou meu cru em php, pelo que entendi acima nos dois select e que no primeiro a busca aparece vazia

e no segundo tem resposta mas nao distingue a cidade por exemplo mandei procurar por leandro em belo horizonte mg

e apareceu pra todos os leandros das cidades de belo horizonte mg e ariquemes - ro

 

queria por no select que buscasse somente o leandro da cidade belo horizonte - mg quando este estiver selecionado

ao inves de aparecer todos

 

lembrando que no banco de dados a tabela de cidade se chama modelo e a tabela estado se chama estado como esta la em cima

 

tipo que você me recomendou acima usando ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

@LEONARDO SENHORINI

 

Evite utilizar Caixa Alta (letras todas em maiúsculas) no título ou mesmo no corpo do tópico ou post.

 

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Comecei a implementar uma coisa semelhante ao que você precisa, mas ainda não terminei, falta alguns ajustes.

 

Só coloquei os estados do RJ e SP e as suas cidades para testar.

 

Utilizei - XHTML, CSS, PHP e MySQL.

 

Veja se lhe ajuda - Clique aqui

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.