Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/08/2012, 15:14
orw28
 
Fecha de Ingreso: agosto-2009
Ubicación: Venezuela
Mensajes: 82
Antigüedad: 14 años, 9 meses
Puntos: 0
Formulario de busqueda con Match y Against!

Hola a todos! Ayuda con esto please: Necesito hacer un formulario de busqueda en una pagina web de zapatos, donde el usuario introduzca por ejemplo: zapatos adidas de hombres, y se muestren los resultados si los hay, si no muestre el mensaje: no se encontraron resultados..

Mi formulario es:
<FORM id="busqueda" action="busqueda.php" method="POST">
<input id="buscar" type="text" name="buscar" size="30">
<input type="submit" value="Buscar" name="Buscar">
</FORM>

Mi archivo busqueda es:
<html>
<head>
<title>Busquedas</title>
</head>

<body id="cuerpo">

<div id="central">
<h2>Tu Búsqueda</h2>
<?php
require("conexion.php");

$busqueda=$_POST['buscar'];

//Verifico que el campo no este vacio..
if ($busqueda<>''){

//Cuento el numero de palabras ingresadas
$trozos=explode(" ",$busqueda);
$numero=count($trozos);

//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
if ($numero==1) {
$cadbusca="SELECT marca, modelo FROM zapatos WHERE marca LIKE '%$busqueda%' OR modelo LIKE '%$busqueda%' LIMIT 5";
}

else {

//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
$cadbusca="SELECT marca,modelo, MATCH(marca,modelo) AGAINST ('%".$busqueda."%' IN BOOLEAN MODE) AS score FROM zapatos WHERE MATCH (marca,modelo) AGAINST ('%".$busqueda."%' IN BOOLEAN MODE) ORDER BY score DESC";
}
$result=mysql_query($cadbusca);

if(mysql_num_rows($result)) {

while($row=mysql_fetch_array($result)) {
echo $row[0]." - ".$row[1]."<br>";
}
}
else {//Si no existen resultados
print("No se encontraron resultados.");
}
}
else {
print("Debe escribir una busqueda");
}
?>
</div>
</body>
</html>

Me hace bien la busqueda cuando escribo una sola palabra (con el like), por ejemplo: nike, y me muestra los zapatos nike, pero cuando introduzco una frase (con match against), por ejemplo: nike azul de hombres, me muestra error en la linea: if(mysql_num_rows($result)); entonces creo que hay un error en la sentencia del SELECT. Cual sera el error por fa??