Ir para conteúdo

POWERED BY:

Arquivado

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

Ridson

Pesquisa com mais de uma plavra-chave

Recommended Posts

Eu fiz um sistema de busca com paginacao que eu peguei aqui no imasters e eu gostaria que quando eu fizesse uma busca ele buscasse todas

as palavras que eu digitei no meu input text.

 

Vou te dar um exemplo:

 

No campo "Descricao" eu tenho a seguinte palavra!

 

Eu tenho saúde para dar e vender

 

se eu digitasse no input text saúde + vender, ele me desse todos os resultados que poderiam ser encontrados no meu Bd, como a busca

do google...

e tbm deixar em negrito as palavras que eu fiz na busca..

 

pode me ajudar!

 

o meu codigo de paginacao está logo abaixo:

include("oopz_conexao.php");$teste = $_GET['buscar'];$re = mysql_query("SELECT count(*) as total FROM sites where Descricao LIKE '%$teste%'");$total = mysql_result($re, 0, "total");$pagina = 0;if(isset($_GET["pagina"])) {$pagina = $_GET["pagina"];}$limite = 10;$paginas = ceil($total / $limite);$inicio = $pagina * $limite;$sql = mysql_query("SELECT * FROM sites where Descricao Like '%$teste%' or Descricao2 LIKE '%$teste%' or Url Like '%$teste%' LIMIT $inicio, $limite");$conta = mysql_num_rows($sql);if ($conta>0){while($l = mysql_fetch_array($sql)) {$ur = $l["Url"];$desc = $l["Descricao"];echo "<br /><br /><br />";echo "<span class='style6'><a href='$ur' target='_blank'>$ur</a><span><BR>";echo "<span class='style6'>$desc</span><BR>";echo "<span class='style41 style42'>O link não está acessando! informe a agente. <a href='<br />quebrado.php'>clique aqui.</a></span><br />";}}else{echo "<span class='style34'><strong>Dica:</strong> Ganhe tempo teclando Enter ao invés de clicar em 'Pesquisar'.</span><br /><br /><br />";echo "<span class='style34'>Sua pesquisa -<strong>$teste</strong>- não encontrou nenhum documento correspondente.</span><br /><br />";echo "<span class='style34'><strong>Sugestões:</strong><br /></span>";echo "<span class='style34'>Certifique-se de que todas as palavras estejam escritas corretamente.</span><br />";echo "<span class='style34'>Tente palavras-chave diferentes.</span><br />";echo "<span class='style34'>Tente palavras-chave mais genéricas.</span>";}?><? echo"Resultados <strong>1 - 10</strong> de aproximadamente <strong>$total</strong> "?></span> <br /><?if($pagina > 0) {$menos = $pagina - 1;$url = $_SERVER["PHP_SELF"]."?pagina=".$menos."&buscar=".$teste;echo"<br>";echo "<span class='style6'><a href=\"$url\"><span class='style3'> Anterior</span></a>";}for($i = 1;$i < $paginas; $i++) {$url = $_SERVER["PHP_SELF"]."?pagina=".$i."&buscar=".$teste;echo "| <span class='style6'><a href=\"$url\">$i</a></span>";}if($pagina < $paginas - 1) {$mais = $pagina + 1;$url = $_SERVER["PHP_SELF"]."?pagina=".$mais."&buscar=".$teste;echo "<span class='style6'>|<a href=\"$url\"><span class='style3'> Próxima</span></span></a>";}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que entendi o que você está querendo....

 

Como colocar em negrito eu num sei como faz não... mas acho que posso te ajudar na busca por várias palavras...

 

<?//a variavel $forbid é um vetor para remover artigos e preposições comuns para evitar diferenciação de por exemplo "carro de passeio" e "carro pára passeio "$forbid = array('o','a','os','as','um','uma','uns','umas','de','com', 'para');function array_remval($val, &$arr)   {		 $array_remval = $arr;		 for($x=0;$x<count($array_remval);$x++)		 {			 $i=array_search($val,$array_remval);			 if (is_numeric($i)) {				 $array_temp  = array_slice($array_remval, 0, $i );			   $array_temp2 = array_slice($array_remval, $i+1, count($array_remval)-1 );			   $array_remval = array_merge($array_temp, $array_temp2);			 }		 }		 return $array_remval;   }$colname_resultado = "-1";   if (isset($_GET['busca'])) {  $colname_resultado = (get_magic_quotes_gpc()) ? $_GET['busca'] : addslashes($_GET['busca']);$busca = stripslashes ($colname_resultado);	if ($colname_resultado[0] == '"' and $colname_resultado[strlen($colname_resultado)-1] == '"'){		$colname_resultado = trim($colname_resultado, '\"');	$colname_resultado = explode("::",$colname_resultado);	}	else{	//aqui o codigo separa as palavras			$array = explode(" ",$colname_resultado);		for($x = 0; $x < count($array); $x++){			for($y = 0; $y < count($forbid); $y++){				if($array[$x] == $forbid[$y]){					$array[$x] = " ";							}//if			}//for interno		}//for externo		$colname_resultado = array_remval(" ", $array) or die ("Pequisa Inválida");	}//else}mysql_select_db($banco, $conecao);//Aqui faremos a montagem dinamica da query$query_resultado = "SELECT * FROM cadastro WHERE ";		  for($a = 0; $a < count($colname_resultado); $a++){			  $query_resultado .= " campo_pesquisado1 LIKE '%" . "$colname_resultado[$a]" . "%'";			if ($a != (count($colname_resultado) - 1)){				$query_resultado .= "AND";			}//if		  }//for		  $query_resultado .= "OR";		  for($a = 0; $a < count($colname_resultado); $a++){			  $query_resultado .= " campo_pesquisado2 LIKE '%" . "$colname_resultado[$a]" . "%'";			if ($a != (count($colname_resultado) - 1)){				$query_resultado .= "AND";			}//if		  }//for		 $query_resultado .= "OR";		  for($a = 0; $a < count($colname_resultado); $a++){			  $query_resultado .= " campo_pesquisado3 LIKE '%" . "$colname_resultado[$a]" . "%'";			if ($a != (count($colname_resultado) - 1)){				$query_resultado .= "AND";			}//if		  }		  $query_resultado .= "ORDER BY pontos DESC";//prontinho.... essa realizar os procedimentos de exibição dos resultados!!	 ?>
Cada bloco for é para um campo diferente a ser pesquisado....

 

Tomara que te ajude!!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se o texto for longo? por exemplo:

 

Andava na praia olhando aquele maravilhoso por do sol quando me deparei com amigos maravilhoros que nao via há muito tempo.

 

ai eu faço uma busca no input text ---- praia + com amigos ou com amigos + praia ou tempo + por do sol ou

por do sol + tempo...

 

Como eu faco isso?

eu li alguns assuntos aqui no imasters falando da funcao explode, más eu nao entendi nada.

 

se você sabe, pode adaptar no meu codigo que eu coloquei logo acima?

 

obrigado filhao...

 

 

 

 

 

Eu acho que entendi o que você está querendo....

 

Como colocar em negrito eu num sei como faz não... mas acho que posso te ajudar na busca por várias palavras...

 

<?//a variavel $forbid é um vetor para remover artigos e preposições comuns para evitar diferenciação de por exemplo "carro de passeio" e "carro pára passeio "$forbid = array('o','a','os','as','um','uma','uns','umas','de','com', 'para');function array_remval($val, &$arr)   {		 $array_remval = $arr;		 for($x=0;$x<count($array_remval);$x++)		 {			 $i=array_search($val,$array_remval);			 if (is_numeric($i)) {				 $array_temp  = array_slice($array_remval, 0, $i );			   $array_temp2 = array_slice($array_remval, $i+1, count($array_remval)-1 );			   $array_remval = array_merge($array_temp, $array_temp2);			 }		 }		 return $array_remval;   }$colname_resultado = "-1";   if (isset($_GET['busca'])) {  $colname_resultado = (get_magic_quotes_gpc()) ? $_GET['busca'] : addslashes($_GET['busca']);$busca = stripslashes ($colname_resultado);	if ($colname_resultado[0] == '"' and $colname_resultado[strlen($colname_resultado)-1] == '"'){		$colname_resultado = trim($colname_resultado, '\"');	$colname_resultado = explode("::",$colname_resultado);	}	else{	//aqui o codigo separa as palavras			$array = explode(" ",$colname_resultado);		for($x = 0; $x < count($array); $x++){			for($y = 0; $y < count($forbid); $y++){				if($array[$x] == $forbid[$y]){					$array[$x] = " ";							}//if			}//for interno		}//for externo		$colname_resultado = array_remval(" ", $array) or die ("Pequisa Inválida");	}//else}mysql_select_db($banco, $conecao);//Aqui faremos a montagem dinamica da query$query_resultado = "SELECT * FROM cadastro WHERE ";		  for($a = 0; $a < count($colname_resultado); $a++){			  $query_resultado .= " campo_pesquisado1 LIKE '%" . "$colname_resultado[$a]" . "%'";			if ($a != (count($colname_resultado) - 1)){				$query_resultado .= "AND";			}//if		  }//for		  $query_resultado .= "OR";		  for($a = 0; $a < count($colname_resultado); $a++){			  $query_resultado .= " campo_pesquisado2 LIKE '%" . "$colname_resultado[$a]" . "%'";			if ($a != (count($colname_resultado) - 1)){				$query_resultado .= "AND";			}//if		  }//for		 $query_resultado .= "OR";		  for($a = 0; $a < count($colname_resultado); $a++){			  $query_resultado .= " campo_pesquisado3 LIKE '%" . "$colname_resultado[$a]" . "%'";			if ($a != (count($colname_resultado) - 1)){				$query_resultado .= "AND";			}//if		  }		  $query_resultado .= "ORDER BY pontos DESC";//prontinho.... essa realizar os procedimentos de exibição dos resultados!!	 ?>
Cada bloco for é para um campo diferente a ser pesquisado....

 

Tomara que te ajude!!

 

Abraços!

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.