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

(Resolvido) Sistema de busca


Juunior

Pergunta

Seguinte, fiz esse sistema de busca, mas tem um problema, por exemplo se tiver um titulo chamado "depois de amanhã", e eu pesquisar "depois" ou "amanhã" ou "depois de" ele funciona direitinho, mas se eu pesquisar "depois amanhã" já não se obtém os resultados, segue o código:

<?php
        $conn = mysql_connect("localhost", "user", "321") or die("Não foi possível a conexão com o Banco");
        $db = mysql_select_db("database", $conn) or die("Não foi possível selecionar o Banco");


        $palavra = trim($_POST['palavra']);

        $sql = mysql_query("SELECT * FROM busca WHERE titulo LIKE '%".$palavra."%' ORDER BY id");
    
        $numRegistros = mysql_num_rows($sql);
        if($palavra==NULL){echo "Digite algum termo de pesquisa!";};
        
        if ($numRegistros != 0) {
        
        if($numRegistros>1)echo "Foram encontrados ".$numRegistros." resultados com a palavra <i>".$palavra."</i>.<br/><br/><br/>";
        if($numRegistros==1)echo "Foi encontrado 1 resultado com a palavra <i>".$palavra."</i>.<br/><br/><br/>";
        while ($result = mysql_fetch_object($sql)) {
            echo $result->titulo . "<br/>".$result->categoria."<br/>";
        }
        
        } else {
        echo "Nenhum resultado foi encontrado com a palavra <i>".$palavra."</i>.";
        }
?>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Pesquise por Full-Text.

PHP » MySQL.

Sim. Crie indice fulltext e pesquise por ele. É muio mais eficiente que o LIKE. É o sistema que o Google e diversas outras empresas de busca usam.

Link para o comentário
Compartilhar em outros sites

  • 0

Use o comando:

$busca=explode(" ",$palavra);

$count_busca=sizeof($busca);

onde $palavra são as palavras digitadas na busca e $busca será nosso vetor com todas as palavras separadamente

conecte-se ao banco de dados e faça

$sql_where_like = "WHERE titulo LIKE '%$busca[0]%'";

for ($i=1;$i<$count_busca; $i++) $sql_where_like="$sql_where_like AND titulo LIKE '%$busca[$i]%' ";

onde temos titulo, você deve separar as colunas (se quiser pesquisar em outras) com OR

agora de o comando para pesquisar da seguinte forma

$sql = mysql_query("SELECT * FROM busca $sql_where_like ORDER BY id");

resumindo, seu novo código será

<?php
        $conn = mysql_connect("localhost", "user", "321") or die("Não foi possível a conexão com o Banco");
        $db = mysql_select_db("database", $conn) or die("Não foi possível selecionar o Banco");

        $palavra = trim($_POST['palavra']);

        $busca=explode(" ",$palavra);                             //separando a busca de acordo com os espaços
        $count_busca=sizeof($busca);                             //contando numero de palavras

        //laço para pesquisa de cada palavra
        $sql_where_like = "WHERE titulo LIKE '%$busca[0]%'";
        for ($i=1;$i<$count_busca; $i++) $sql_where_like="$sql_where_like AND titulo LIKE '%$busca[$i]%' ";

        $sql = mysql_query("SELECT * FROM busca $sql_where_like ORDER BY id");
    
        $numRegistros = mysql_num_rows($sql);
        if($palavra==NULL){echo "Digite algum termo de pesquisa!";};
        
        if ($numRegistros != 0) {
        
        if($numRegistros>1)echo "Foram encontrados ".$numRegistros." resultados com a palavra <i>".$palavra."</i>.<br/><br/><br/>";
        if($numRegistros==1)echo "Foi encontrado 1 resultado com a palavra <i>".$palavra."</i>.<br/><br/><br/>";
        while ($result = mysql_fetch_object($sql)) {
            echo $result->titulo . "<br/>".$result->categoria."<br/>";
        }
        
        } else {
        echo "Nenhum resultado foi encontrado com a palavra <i>".$palavra."</i>.";
        }
?>

espero ter ajudo, att.: Rafael Silva Pinto

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

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