Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>";
}
}
?>
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 $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>";
}
}
}Muito obrigado amigos.
>
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.
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 ?
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.
Pesquise por FULL TEXT
https://en.wikipedia.org/wiki/Full_text_search
é o que mais se aproxima da logica Fuzzy, ou seja, vai mostrar os mais relevantes
>
Pesquise por FULL TEXT
https://en.wikipedia.org/wiki/Full_text_search
é o que mais se aproxima da logica Fuzzy, ou seja, vai mostrar os mais relevantes
Obrigado. Farei isso.
De uma olhada nestes conteúdos pra entender a dinâmica. Falei se aproxima, na realidade é similar a Logica Fuzzy.
>
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
Opa! De novo! Muito obrigado, vou estudar.
Troque o LIKE por =
Ai ele só vai buscar o realmente só o que foi escrito