Ir para conteúdo

POWERED BY:

Arquivado

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

betodesign

[Resolvido] Busca interna php

Recommended Posts

ola amigos postei uma vez mas nao fui compreendido, ( eu acho)... Vou tentar ser mais especifico, lá vai!

 

Tenho uma busca em meu site simples que acha uma palavra em meu banco de empresas

porém a busca só funciona com 1 palavra, ex "esporte" , acha 3 empresas, mas quando

eu procuro ex.:"esporte brasil" não acha nada. Porém existem 3 resultados também para

"brasil", mas quando junta as duas palavras nao acha nada.

 

gostaria que a busca procurasse a palavra individualmente, tipo busquei " esporte brasil"

era pra aparecer 6 resultados, 3 de "esporte" e 3 de "brasil". Hoje não aparece nenhum resultado e

isto "queima" o site, que parece que não tem nada.

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com a mesma dúvida! e tentei oque o vonzuben tentou e não funciona..

 

Me falaram que tem que explodir a palavra e depois montar um loop de cada palavra e assim mostra o resultado.

 

Mais não tenho ideia de como fazer isso alguem pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola,

eu fiz issto faz algum tempo so q eu fiz com categorias... "um pouco mais dificil"

mas vamos la

<?php
include "config.php";

// Busca by MK
$busca=$_POST['BUSCA'];

$tb = "mk_busca";

$sql = mysql_query("SELECT * FROM ".$tb." WHERE  nomes LIKE '%$busca%'");

?>
<form action="" method=post>
<input type=text name=BUSCA >
<input type=submit >
</form>
by mk

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola,

eu fiz issto faz algum tempo so q eu fiz com categorias... "um pouco mais dificil"

mas vamos la

<?php
include "config.php";

// Busca by MK
$busca=$_POST['BUSCA'];

$tb = "mk_busca";

$sql = mysql_query("SELECT * FROM ".$tb." WHERE  nomes LIKE '%$busca%'");

?>
<form action="" method=post>
<input type=text name=BUSCA >
<input type=submit >
</form>
by mk

Não pegou aqui , pelo menos aqui está como as outras, se tiver um valor no banco de dados com nome brasil e outra com nome esporte e eu buscar por esporte brasil não aparece resultado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rogério, isso não daria muito certo, porque se explodir e fizer um loop, duas palavras do mesmo registro na tabela podem aparecer, consequentemente aparecer dois resultados iguais.

$busca = "oi como vai você";
$busca = explode(' ', $busca);

foreach($busca as $resultado){

$sql = "SELECT * FROM `tabela` WHERE `campo` LIKE '%".$resultado."%'";

}

Se tivessemos na tabela isso:

id | texto

1 | oi vai

2 | como

3 | você vai

A busca retornaria isso:

ID:

1

1 (dois 1, porque tem as palavras "oi" e "vai")

2

3

3

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rogério, isso não daria muito certo, porque se explodir e fizer um loop, duas palavras do mesmo registro na tabela podem aparecer, consequentemente aparecer dois resultados iguais.

$busca = "oi como vai você";
$busca = explode(' ', $busca);

foreach($busca as $resultado){

$sql = "SELECT * FROM `tabela` WHERE `campo` LIKE '%".$resultado."%'";

}

Se tivessemos na tabela isso:

 

A busca retornaria isso:

 

Entendeu?

 

Olha eu usei oque voce me passou ai e editei e nem repetiu, mais pegou pra mim como coloquei...

Compartilhar este post


Link para o post
Compartilhar em outros sites

$busca = isset($_GET['busca']) ? $_GET['busca'] : null;
$resultado_explode = explode(' ', $busca);
foreach($resultado_explode as $resultado){
$consulta = mysql_query("SELECT * FROM videos WHERE titulo LIKE '%" .$resultado. "%'");
}
$conta = mysql_num_rows($consulta);
if($busca == ""){
echo"<div id='warning'><center>Você deve digitar algo para efetuar a busca.</center></div>";
}
else{
if($conta == 0){
echo"<div class='warning'>Nenhum video foi encontrado.</div>";
}
while($busca = mysql_fetch_assoc($consulta)){
$id = $busca["id"];
$titulo = $busca["titulo"];

 

Cara usei isso ai ... e ate agora nao achei nada errado por que não entendo muito, voces expert ai se acha me fala

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, isso não funciona, pega apenas a última palavra buscada, exemplo:

Busca: "oi como vai"

Se você executar o SQL fora do foreach, comenta retornará a busca por isso: "vai".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei a solução, era bem simples, mas é só fazer a busca dentro do foreach, mas sem utilizar while, pois senão saíria um loop com o resultado de cada palvra:

$words = "oi mãe tchau";
$words = explode(' ', $words);
foreach($words as $w){
$sql = "SELECT * FROM `tabela` WHERE `campo` LIKE '%".$w."%'";
$query = mysql_query($sql) or die (mysql_error());
$resultado = mysql_fetch_object($query);
echo $resultado->id."<br>";//Mostra os id's dos resultados encontrados
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

gente me ajuda ai, rs

eu coloquei o codigo do gabriel e funcionou mas só abre 2 resultados no maximo de cada busca , porque será?

 

$words = $_GET['busca'];
$words = explode(' ', $words);
foreach($words as $w){
$sql = "SELECT * FROM listing WHERE listing_title LIKE '%".$w."%'";
$query = mysql_query($sql) or die (mysql_error());
$resultado = mysql_fetch_object($query);
echo $resultado->listing_title."<br>";//Mostra os id's dos resultados encontrados
}

 

era pra inserir isto no codigo, ou colocar só isso? eu coloquei só isso e chamava a url busca.php?busca=imoveis%20carros entende?

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.