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

Busca Interna Com Filtro!


Naty_Za

Pergunta

Oi pessoal!!! To com um probleminha....

Pra que sabe programar isso deve ser facinho, porque eu vejo muuuitos sites usando..

é algo tão simples... um site de cadastros, com um sistema de busca por filtro..

ex: a pessoa procura por caixas, e pode escolher se quer em todo o site ou só em um determinado lugar.

http://www.guiaconstruirereformar.com.br/piadas/naty.php

só que eu não consigo filtrar isso.. quando escrevo "caixas" e deixo pra buscar em todas ele lista certinho, mas

se eu selecionar uma categoria, ele volta com resultado 0

Qual o erro?? me ajudem pls!!

<?
include("Connections/config.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>natalia</title>

</head>

<body>
<div align="center">
  <table width="700" border="1" cellpadding="2" cellspacing="0" bordercolor="#E6E6E6">
    <tr valign="top"> 
      <td colspan="2"> </td>
    </tr>
    <tr valign="top"> 
      <td width="143" align="left" valign="top" bgcolor="#F8F8F8"><span class="style10"><strong>Buscar 
        Cadastro</strong><br>
        </span> <form name="form1" method="post" action="naty.php">
          <div align="center"> 
            <input name="palavra" type="text" id="palavra">
            <strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 
            <select name="categoria" size="1" id="categoria">
              <option value="<? echo "$id"; ?>">- Todas as Categorias -</option>
              <?php


// conexao com o banco de dados aqui....
$sql = mysql_query("SELECT * FROM cat 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">
          </div>
        </form>
     </td>
      <td width="543" align="left" valign="top"><div align="center"><br>
          <table width="529" border="0" cellspacing="0" cellpadding="0">
            <tr> 
              <td width="529" align="left" valign="top"> 
                <? if (!empty($_POST["palavra"])) { 
$palavra = str_replace(" ", "%", $_POST["palavra"]); // Altera os espaços adicionando no lugar o simbolo % 

// Verifica a categoria 
$sql_cat = ""; 
if (isset($_POST["categoria"]) && is_numeric($_POST["categoria"])) { $sql_cat = " && id_cat='" . $_POST["categoria"] . "'"; } 
$qr = "SELECT * FROM piadas WHERE titulo LIKE ('%" . $palavra . "%'" . $sql_cat . ") 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 ded resultados encontrados 
echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=1>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["piada"];
$campo3 = $dados["id_cat"];
$campo4 = $dados["cliques"];
$campo5 = $dados["id"];


echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><a href=\"piada.php?id_cat=$campo3&id=$campo5\">$campo1</a> - ($campo4 visualizações)</font><br>";
} 
} 
?>
              </td>
            </tr>
          </table>
        </div></td>
    </tr>
    <tr valign="top"> 
     
    </tr>
  </table>
</div>
</body>
</html>

obrigadaa

Natália

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

PAra utilizar 2 valores para buscar você deve usar a sintaxe:

SELECT * FROM tabela WHERE coluna1 = '$valor_pra_coluna1' AND coluna2 = '$valor_para_coluna2'

O que você tem que notar no seu select é que, o valor que vem da lista tem qu estar declarado no "value"... no value do seu código está uma numereção, por acaso os estados são guardados no BD pela numeração ou pelo nome? se for pelo nome o value deve passar de:

<option value="2">Alagoas</option>

<option value="4">Amapá</option>

<option value="3">Amazonas</option>

...

para

<option value="Alagoas">Alagoas</option>

<option value="Amapá">Amapá</option>

<option value="Amazonas">Amazonas</option>

...

Link para o comentário
Compartilhar em outros sites

  • 0

Então, mas ele é puxado certinho pelo BD.. na tabela das categorias tem "id" e "nome"

mas o erro agora mudou!! agora ele busca certinho na categoria especificada, só que na hora que eu deixo

pra buscar em todas as categorias, ele volta com resultado 0..

<? if(!empty($_POST["palavra"])) {
$palavra = str_replace(" ", "%", $_POST["palavra"]); // Altera os espaços adicionando no lugar o simbolo %
$categoria = $_POST['categoria'];
$qr = "SELECT * FROM piadas WHERE titulo LIKE '%".$palavra."%' and id_cat = '$categoria' ORDER BY titulo ASC"; // definimos para buscar no campo1 e ordenar pelo campo que você quiser.

e agora???

meu ajuda.. pls!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Claro.. na hora que você não seleciona nenhum estado o valor de um dos condicionais passa a ser "" (vazio) e ai a query da problema, o que você pode fazer é testar o valor desse condicional, se ele for diferente de vazio você usa uma query (sem o termo em questão), e ele estiver preenchido, você usa outra (que é a atual)...

Link para o comentário
Compartilhar em outros sites

  • 0

CONSEGUI!!!!!!!!!!!!!!!!!!! :D :rolleyes: B)

<? 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 piadas WHERE titulo LIKE '%".$palavra."%' ORDER BY titulo ASC";
} else {
   $qr = "SELECT * FROM piadas WHERE titulo LIKE '%".$palavra."%' and id_cat = '$categoria' ORDER BY titulo ASC"; // definimos para buscar no campo1 e ordenar pelo campo que você quiser.
}

Valeu pelas dicas ESerra!!!!!!!!!!!!!!!!!!!!!!!

:P

Link para o comentário
Compartilhar em outros sites

  • 0

Gente, nesse sisteminha de busca, tem a caixa pra pessoa pesquisar, escrever o que quer e um menulist em baixo com as categorias pra pessoa escolher.

Como eu faço, pra quando a pessoa não escrever nada na caixa e clicar em buscar em uma determinada categoria, ele aparecer tudo o que tiver daquela categoria.

porque hj se eu faço isso, ele volta em branco.. eu queria que voltasse com todos os registros daquela categoria...

como fazer??? to postando o código...

valewww

<? 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_cat = '$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_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>
";

} 
} 
?>

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,4k
×
×
  • Criar Novo...