Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema De Busca De qualquer Forma


Naty_Za

Pergunta

Gente, tenho um sitema de busca assim:

Escolhe 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 não completa... volta 0..

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

se a pessoa escolher só o estado e não 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 não 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....

como implementar isso no meu código????

to postando ele!!! Valeuuuu...

<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 exibe
while ($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>

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Teste as variáveis (if/else) para ver quais estão vazias e no final monte a query com o que vir... um exemplo... vamos supor 3 campos enviados do formulário, chamando nome email telefone:

<?php
if (($_POST['nome'] =="") AND ($_POST['email'] =="") AND ($_POST['cidade'] ==""){
echo "VOCÊ TEM QUE ESCOLHER ALGUMA COISA PARA PESQUISAR";
}else{
if ($_POST['nome'] !="") {$nome = "nome = '".$_POST['nome']."'";}else{$nome = "";}

if (($_POST['email'] !="") AND ($_POST['nome'] !="")) {$email = " AND email = '".$_POST['email']."'";}
elseif (($_POST['email'] !="") AND ($_POST['nome'] =="")) {$email = "email = '".$_POST['email']."'";}
else{$email = "";}

if (($_POST['cidade'] !="") AND ($_POST['email'] !="") OR ($_POST['nome'] !="")) {$email = " AND cidade = '".$_POST['cidade']."'";}
elseif (($_POST['email'] !="") AND ($_POST['nome'] =="") AND ($_POST['nome'] =="")) {$email = "cidade = '".$_POST['cidade']."'";}
else{$cidade = "";}
}
$sql = mysql_query("SELECT * FROM tabela WHERE '$nome''$cidade''$cidade'");
//Segue o código...
?>

A idéia e você ir excluindo os vazios para utilizar uma única query... você também pode montar a query dentro de cada teste e ir testando se tem apenas um != de vazio.. se tem 2 se todos estão e assim por diante... se você forçasse os usuárioas a preencher tudo seria bem mais fácil...

Ps.: pode estar dando parse error, não testei...

Link para o comentário
Compartilhar em outros sites

  • 0

não consegui! :(

realmente deu "parse error".. o que significa???

e como eu faria caso forçasse os usuarios a preencher tudo?????

é que eu particularmente não gosto de busca onde tenho que colocar tudo detalhado.. acho mais interessane e fácil até, ir buscando de todas as formas que quiser...

preciso conseguir fazer isso!!!

me ajuda, pls!!!

Valeuu

Editado por Naty_Za
Link para o comentário
Compartilhar em outros sites

  • 0

Parse error é quando o cara esquece alguma coisa que é fundamental para a sintaxe do código... no caso esqueci um ) no primeiro if...

<?php
//Faz a conexão com o banco de dados

if (($_POST['nome'] =="") AND ($_POST['email'] =="") AND ($_POST['cidade'] =="")){
echo "VOCÊ TEM QUE ESCOLHER ALGUMA COISA PARA PESQUISAR";
}else{
if ($_POST['nome'] !="") {$nome = "nome = '".$_POST['nome']."'";}else{$nome = "";}

if (($_POST['email'] !="") AND ($_POST['nome'] !="")) {$email = " AND email = '".$_POST['email']."'";}
elseif (($_POST['email'] !="") AND ($_POST['nome'] =="")) {$email = "email = '".$_POST['email']."'";}
else{$email = "";}

if (($_POST['cidade'] !="") AND ($_POST['email'] !="") OR ($_POST['nome'] !="")) {$email = " AND cidade = '".$_POST['cidade']."'";}
elseif (($_POST['email'] !="") AND ($_POST['nome'] =="") AND ($_POST['nome'] =="")) {$email = "cidade = '".$_POST['cidade']."'";}
else{$cidade = "";}
}
$sql = mysql_query("SELECT * FROM tabela WHERE '$nome''$cidade''$cidade'");
//Segue o código...
?>

Para forçar eles a preencher tudo faz o check em todos os campos para ver se os 3 estão preenchidos ( != "")... se estiverem faz uma coisa, se não estiverem faz outra...

Link para o comentário
Compartilhar em outros sites

  • 0

Não sei o que tá acontecendo.. não funcionaa!!!! :wacko:

não acredito... o que pode ser?????? mesmo colocando esse código ele não busca na cidade determinada...

quando vejo em outros sites, parece ser tão fácil....

vou postar o sistema de busca completo e as tabelas, assim visualizando tudo, podem ver melhor o que pode estar havendo...

buscar.php

<table width="759" border="0" align="center" cellpadding="2" cellspacing="0" bordercolor="#E6E6E6">
  <tr valign="center">
      <td colspan="2"> </td>
    </tr>
    <tr valign="top">
      <td width="751" height="44" align="left" valign="top" bgcolor="#F8F8F8"><span class="style10">
        </span> <form name="form1" method="post" action="busca_pi.php">
          <div align="center">
            <p> <span class="fonte_geral">Buscar Cadastro:</span> </font></strong></span></font>
              <font size="1" face="Verdana, Arial, Helvetica, sans-serif"> </font><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
              <select name="estados" size="1" class="fonte_geral" 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" class="fonte_geral" 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" class="fonte_geral" id="palavra">
              <input name="Submit" type="submit" class="fonte_geral" value="Buscar">
            </p>
          </div>
        </form></td>
    </tr>
    <tr valign="top">
      <td height="23" align=?????U??º?U"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 %
$categoria = $_POST['categoria'];
if (empty($categoria)) {
   $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_cidade like '$categoria')) 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 exibe
while ($dados = mysql_fetch_array($sql)) {
$campo1 = $dados["titulo"];
$campo2 = $dados["servicos"];
$campo3 = $dados["id_cidade"];
$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>
tabela estados
#
# Estrutura da tabela `estados`
#

CREATE TABLE `estados` (
`id` int(5) NOT NULL auto_increment,
`nome` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=51 ;

#
tabela cidades
#
# Estrutura da tabela `cidades`
#

CREATE TABLE `cidades` (
`id` int(11) NOT NULL default '0',
`id_estado` text NOT NULL,
`nome` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0;

#
tabela cadastros
#
# Estrutura da tabela `cadastros`
#

CREATE TABLE `cadastros` (
`id` int(11) NOT NULL auto_increment,
`id_cidade` bigint(20) NOT NULL default '0',
`titulo` varchar(255) NOT NULL default '',
`servicos` text NOT NULL,
`endereco` text NOT NULL,
`tel` text NOT NULL,
`cidade` text NOT NULL,
`estado` text NOT NULL,
`cep` text NOT NULL,
`email` text NOT NULL,
`http` text NOT NULL,
`palavras` text NOT NULL,
`cliques` bigint(20) NOT NULL default '0',
`data` varchar(10) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=9 ;

#

é isso aí... pessoal, me ajudem, por favor!!!

Valeu!!!!!!

Naty

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,1k
×
×
  • Criar Novo...