Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/08/2012, 17:40
orw28
 
Fecha de Ingreso: agosto-2009
Ubicación: Venezuela
Mensajes: 82
Antigüedad: 14 años, 9 meses
Puntos: 0
Busqueda multiple con MATCH Y AGAINST.

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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Busquedas</title>
<link href="estilos.css" rel="stylesheet" type="text/css" media="screen"/>
<link rel="shortcut icon" href="img/icono.ico">
</head>

<body id="cuerpo">

<div id="superior">

<img id="logo"/>

</div><!--Fin div superior-->

<!----------DIVISION CENTRAL-------------->
<div id="central">

<div">
<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>

</div><!--Fin div central-->

</body>
</html>

Me hace bien la busqueda cuando escribo una sola palabra, pero cuando introduzco una frase me muestra error la linea: if(mysql_num_rows($result)); entonces supongo que hay un error en la sentencia del SELECT. Cual sera el error por fa??