Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera estou querendo melhorar o sistema de busca do meu site, o código está em anexo, eu consegui fazer ela funcionar da forma que eu quero, o unico problema é que agora eu preciso da ultima coisa pra ele ficar perfeito.
Ex: digito da busca "pet shop" ele busca "pet" e busca "shop" , ai lista mais de 50 resultados.
Ex.: "roupa de cama" a busca abre quase todos os resultados por causa do "de"
Gostaria que ela fosse inteligente, e que neste momento de 2 palavras ela pudesse listar no resultado apenas o registro que possui todas as palavras, correto? Irá deixar a busca mais limpa, pois quanto mais palavras, mais detalhes a pessoa quer. Independente da ordem, caso o nome do resultado no banco seja BANCO DO BRASIL , se eu digitar brasil branco, ele acha também, pois reparei que a busca padrão em php só busca na ordem...
Bom acho que falei demais, o codigo está abaixo, gostaria de ajuda onde preciso alterar para funcionar da forma acima. Abração a todos!
<?
$conexao = mysql_connect("$server", "$user", "$senha"); $db = mysql_select_db("$banco");
// termina conexão com o banco
$palavra = $_GET[palavra];
$palavra = mysql_real_escape_string($palavra);
$documento = "$palavra";
//Aqui você coloca o nome do arquivo que será gravado
$arquivo = "buscas/buscas.txt";
//Abrimos o arquivo que será gravado.
$abrir = fopen($arquivo, "a");
$quebra = chr(13).chr(10);//essa é a quebra de linha
//Gravamos no arquivo
$gravar = fwrite($abrir, $documento.$quebra);
?>
<?php include "templates/global_top_busca.html"; ?>
<style type="text/css">
<!--
.busca1 {
font-size: 14px;
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
color: #FF0000;
}
-->
</style>
<table width="100%" border="2" align="center" cellpadding="5" cellspacing="5" bordercolorlight="#006699">
<tr>
<td width="489" valign="top">
<?php
$aux = explode(" ", $palavra);
$i = 0;
while ($aux[$i] != "") {
// esse IF vai servir para a primeira palavra ou se existir apenas uma palavra
if ($i == 0) {
$busca = "listing_title LIKE '%".$aux[$i]."%' OR listing_brief_desc LIKE '%".$aux[$i]."%' OR listing_brief_desc LIKE '%".$aux[$i]."%'";
} else {
// Aki ele concatena se existir várias palavras
$busca .= " OR listing_title LIKE '%".$aux[$i]."%' OR listing_brief_desc LIKE '%".$aux[$i]."%' OR listing_brief_desc LIKE '%".$aux[$i]."%'";
}
$i++;
}
$sql = "SELECT * FROM listing WHERE $busca ORDER BY listing_title";
$query = mysql_query($sql);
$id = $busca["listing_id"];
$titulo = $busca["listing_title"];
$tr2 = mysql_num_rows($query);
if($tr2>0){
?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td height="22"><font size="4" color="<?=$coronmouse?>"><b>NOS ANUNCIOS</b></font></td>
<td height="22" colspan="2" align="right">Foram encontrados <? echo "<b><font color=$coronmouse>$tr2</font></b>";?> registros.</td>
</tr>
<tr>
<td height="1" colspan="4" background="<?=$usite?>images/divisao_horizontal.gif"></td>
</tr>
<?
$i = 1;
while($busca = mysql_fetch_assoc($query))
{
if ($i == 1) { $bgcolor="$corcelula1"; } else { $bgcolor="#FFFFFF"; $i = 0; }
$i++;
$titulo = str_replace("%","-",$busca["listing_title"]);
?>
<tr>
<td height="3" colspan="4" bgcolor="<?=$bgcolor?>"></td>
</tr>
<tr>
<td colspan="3" bgcolor="<?=$bgcolor?>"> <b><font style='text-transform:uppercase;'><a href="cabofrio-<?php echo $busca["listing_id"]; ?>-<?php echo $titulo; ?>">
<?php echo $busca["listing_title"]; ?>
</a></font></b></td>
</tr>
<tr>
<td height="3" colspan="4" bgcolor="<?=$bgcolor?>"></td>
</tr>
<tr>
<td height="1" colspan="4" background="<?=$usite?>images/divisao_horizontal.gif"></td>
</tr>
<? }?>
</table>
<? } else {?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td height="22"><font size="4" color="<?=$coronmouse?>"><b>NOS ANUNCIOS</b></font><font size="2"> </font></td>
</tr>
<tr align="center">
<td bgcolor="<?=$bgcolor?>"><fieldset>
<font color="#FF0000" size="2"><b> <br />
Nenhum registro encontrado!</b></font> <br />
<br />
</fieldset></td>
</tr>
</table>
<? } ?></td>
<td width="462" valign="top">
<?php
$aux = explode(" ", $palavra);
$i = 0;
while ($aux[$i] != "") {
// esse IF vai servir para a primeira palavra ou se existir apenas uma palavra
if ($i == 0) {
$busca = "category_name LIKE '%".$aux[$i]."%'";
} else {
// Aki ele concatena se existir várias palavras
$busca .= " OR category_name LIKE '%".$aux[$i]."%'";
}
$i++;
}
$sql = "SELECT * FROM setup_category WHERE $busca ";
$query = mysql_query($sql);
$tr1 = mysql_num_rows($query);
if($tr1>0){
?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width="238" height="22"><font size="4" color="<?=$coronmouse?>"><b>NAS CATEGORIAS</b></font></td>
<td width="238" height="22" colspan="2" align="right">Foram encontrados <? echo "<b><font color=$coronmouse>$tr1</font></b>";?> registros.</td>
</tr>
<tr>
<td height="1" colspan="4" background="<?=$usite?>images/divisao_horizontal.gif"></td>
</tr>
<?
$i = 1;
while($busca = mysql_fetch_assoc($query))
{
if ($i == 1) { $bgcolor="$corcelula1"; } else { $bgcolor="#FFFFFF"; $i = 0; }
$i++;
?>
<tr>
<td height="3" colspan="4" bgcolor="<?=$bgcolor?>"></td>
</tr>
<tr>
<td colspan="3" bgcolor="<?=$bgcolor?>"> <b><font style='text-transform:uppercase;'><a href="<?=$busca[category_id]?>-<?=$busca[category_name]?>">
<?=$busca[category_name]?>
</a></font></b></td>
</tr>
<tr>
<td height="3" colspan="4" bgcolor="<?=$bgcolor?>"></td>
</tr>
<tr>
<td height="1" colspan="4" background="<?=$usite?>images/divisao_horizontal.gif"></td>
</tr>
<? }?>
</table>
<? } else {?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td height="22"><font size="4" color="<?=$coronmouse?>"><b>NAS CATEGORIAS</b></font></td>
</tr>
<tr align="center">
<td bgcolor="<?=$bgcolor?>"><fieldset >
<font color="#FF0000" size="2"><b> <br />
Nenhum registro encontrado!</b></font> <br />
<br />
</fieldset></td>
</tr>
</table>
<? } ?>
</td>
<td width="462" valign="top">
<?php
$aux = explode(" ", $palavra);
$i = 0;
while ($aux[$i] != "") {
// esse IF vai servir para a primeira palavra ou se existir apenas uma palavra
if ($i == 0) {
$busca = "product_brief_info LIKE '%".$aux[$i]."%' OR product_name LIKE '%".$aux[$i]."%'";
} else {
// Aki ele concatena se existir várias palavras
$busca .= " OR product_brief_info LIKE '%".$aux[$i]."%' OR product_name LIKE '%".$aux[$i]."%'";
}
$i++;
}
$sql = "SELECT * FROM listing_product WHERE $busca ";
$query = mysql_query($sql);
$tr1 = mysql_num_rows($query);
if($tr1>0){
?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width="238" height="22" bgcolor="#FF0000"><font size="4" color="#ffffff"><b>NAS PROMOÇÕES</b></font></td>
<td width="238" height="22" colspan="2" align="right">Foram encontrados <? echo "<b><font color=$coronmouse>$tr1</font></b>";?> registros.</td>
</tr>
<tr>
<td height="1" colspan="4" background="<?=$usite?>images/divisao_horizontal.gif"></td>
</tr>
<?
$i = 1;
while($busca = mysql_fetch_assoc($query))
{
if ($i == 1) { $bgcolor="$corcelula1"; } else { $bgcolor="#FFFFFF"; $i = 0; }
$i++;
?>
<tr>
<td height="3" colspan="4" bgcolor="<?=$bgcolor?>"></td>
</tr>
<tr>
<td colspan="3" bgcolor="<?=$bgcolor?>"> <b><font style='text-transform:uppercase;'><a href="[http://guiaforte.com.br/promocoes/oferta/cabofrio/](http://guiaforte.com.br/promocoes/oferta/cabofrio/)">
<?=$busca[product_name]?>
</a></font></b></td>
</tr>
<tr>
<td height="3" colspan="4" bgcolor="<?=$bgcolor?>"></td>
</tr>
<tr>
<td height="1" colspan="4" background="<?=$usite?>images/divisao_horizontal.gif"></td>
</tr>
<? }?>
</table>
<? } else {?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td height="22"><font size="4" color="<?=$coronmouse?>"><b>NAS PROMOÇÕES</b></font></td>
</tr>
<tr align="center">
<td bgcolor="<?=$bgcolor?>"><fieldset >
<font color="#FF0000" size="2"><b> <br />
Nenhum registro encontrado!</b></font> <br />
<br />
</fieldset></td>
</tr>
</table>
<? } ?>
</td>
</tr>
</table>
<?php include "templates/global_bottom.html"; ?>Carregando comentários...