Gostaria de compartilhar com todos um script de busca, com filtros para segurança, etc, para que o pessoal que entende mais incrementar as funções para deixar mais rapido e mais seguro e os novatos aprenderem um pouco mais.
A estrutura geral seria:
tabela MySQL com nome "conteudo" e os campos:
- titulo
- palavras_chave
- texto
O campo de busca seria um <input type="text" name="busca"> básico e a pagina de resultado para onde o formulario tipo GET será enviado é "resultado.php"
Ok, a idéia é: digitar uma palavra ou várias, e buscar no banco de dados registros que contenham as palavras em um dos campos.... Adicionaremos alguns filtros, como por exemplo os de sites como Google, para procurar frases exatas entre aspas, mostrar um calculo ao digitar 2+2 por exemplo, etc....
No script de resultado, teremos que avaliar o que foi digitado ( para evitar furos de segurança com injections, etc. ), filtrar e efetuar a busca e mostrar os resultados.
Partindo direto para o script de resultados ( o foco do tópico ), teriamos inicialmente, bem básico, o seguinte:
// Pegar o que foi digitado: $campo_busca = $_GET["busca"]; // Adicionar barras para segurança caso não seja adicionado automaticamente: if(!get_magic_quotes_gpc()) { $campo_busca = addslashes($campo_busca); } // Limpar a string $campo_busca = trim($campo_busca); // Separar palavras digitadas $busca_explode = explode(" ",$campo_busca); // Montar query para busca com as palavras $monta_query = ""; for($x=0;$busca_explode[$x];$x++){ // Se tiver mais de uma palavra, adiciona OR if($x>0){ $monta_query.= "OR "; } $monta_query.= "titulo LIKE '% " . $busca_explode[$x] . "%'"; $monta_query.= "OR palavras_chave LIKE '% " . $busca_explode[$x] . "%'"; $monta_query.= "OR texto LIKE '% " . $busca_explode[$x] . "%'"; } // Finaliza a query $sql = "SELECT * FROM conteudo WHERE $monta_query"; // Efetua a busca $query = mysql_query($sql); // Escreve resultado while($resultado=mysql_fetch_array($query)){ echo "Titulo: " . $resultado["titulo"] . "<br>"; echo "Texto: " . $resultado["texto"] . ""; }
Acredito que assim temos um sistema bem básico e um ponto de partida para desenvolver algo útil e legal para todos.
Escrevi de cabeça, se tiver algum erro avise por favor.