Jump to content


Photo

Sistema De Busca Por Palavras/frases


  • Faça o login para participar
1 reply to this topic

#1 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

Posted 12/11/2005, 19:45

Olá pessoal,

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.

:lol: (y)

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.

:lol: (y)
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.

#2 Willian Santana

Willian Santana

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:Pirapora doBom Jesus

Posted 01/10/2015, 21:23

Legal seu sistema mas ta dando erro

 

Undefined offset,

 

nessa linha for($x=0;$busca_explode[$x];$x++)






0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq