Ir para conteúdo

Arquivado

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

arielson

Motor de Busca, mostrar somente o digitado.

Recommended Posts

Olá, pessoal tudo bem?

Eu novamente...

Qual é a minha dificuldade dessa vez?

Pois bem.

Aprendi com a ajuda de alguns cursos como faz um motor de busca.

Agora só tem um problema.

Quando digito uma letra, aparece todos resultados que tem essa letra.

E mais...quando dou um espaço, mostra todos os resultados, pois, todos tem espaço, por exemplo 'cachorro<espaço>quente'.

O que quero? (Por favor, se puderem.)

Quero que quando digite, só apareça o que digitei.

E se tiver como também, gostaria de tirar a sequencia de números que aparece. Por exemplo: se digitei ''cachorro'' vai aparecer em sequencia todos os que tem cachorro.

-----------------------------

1: Cachorro

2: Cachorro quente

3: Como fazer cachorro quente

--------------------------

Essa sequencia ai, marcado com negrito.

Não mostrar resultados quando apertar espaço, e tirar a sequencia que mostra.

Estou aprendendo amigos. Muito Obrigado.

Código de busca

<?php
//Incluir a conexão com banco de dados
include_once('conexao.php');
//Recuperar o valor da palavra
$cursos = $_POST['palavra'];
//Pesquisar no banco de dados nome do curso referente a palavra digitada pelo usuário
$cursos = "SELECT * FROM cursos WHERE nome LIKE '%$cursos%'";
$resultado_cursos = mysqli_query($conn, $cursos);
if(mysqli_num_rows($resultado_cursos) <= 0){
echo "Não conseguimos encontrar nada com esse nome...";
}else{
while($rows = mysqli_fetch_assoc($resultado_cursos)){
echo "<li>".$rows['nome']."</li>";
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque o LIKE por =

$cursos = "SELECT * FROM cursos WHERE nome LIKE '%$cursos%'";

$cursos = "SELECT * FROM cursos WHERE nome = '{$cursos}'";

Ai ele só vai buscar o realmente só o que foi escrito

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

Faça uma limpeza na string enviada, verifique se está vazio, depois remova os espaços no incio e fim da string

$cursos =  $_POST['palavra'];

if(empty($cursos) or $cursos == ' ')
{
    print 'digite alguma coisa';
}
  else
{
    $cursos = trim($cursos);//tira os espaços no inicio e fim
    $resultado_cursos = mysqli_query($conn, "SELECT nome FROM `cursos` WHERE `nome` LIKE '%$cursos%'");
    if(mysqli_num_rows($resultado_cursos) == 0){
        echo "Não conseguimos encontrar nada com esse nome...";
    }else{
        while($rows = mysqli_fetch_assoc($resultado_cursos)){
            echo "<li>".$rows['nome']."</li>";
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque o LIKE por =

$cursos = "SELECT * FROM cursos WHERE nome LIKE '%$cursos%'";

$cursos = "SELECT * FROM cursos WHERE nome = '{$cursos}'";

Ai ele só vai buscar o realmente só o que foi escrito

Me diz, tudo OK. Agora, estou tentando colocar palavras pra não encontrar na pesquisa. Tem como fazer isso, eu dupliquei a linha, tentei mover o } mais dá erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me diz, tudo OK. Agora, estou tentando colocar palavras pra não encontrar na pesquisa. Tem como fazer isso, eu dupliquei a linha, tentei mover o } mais dá erro.

Como assim palavras pra não encontrar na pesquisa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim palavras pra não encontrar na pesquisa ?

Exemplo.

No caso, eu aperto espaço 1x e não mostra nada. OK

Eu aperto espaço 2x já mostra todos os resultados.

Queria limitar.

Só mostrar resultados com mais de 3 letras.

E não mostrar nada, caso aperte espaço, não importa o quanto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

De uma olhada nestes conteúdos pra entender a dinâmica. Falei se aproxima, na realidade é similar a Logica Fuzzy.

http://www.devmedia.com.br/mysql-fulltext-search/14040

http://www.devmedia.com.br/indices-fulltext-no-mysql/7631

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.