13/08/2012, 15:14
|
| | Fecha de Ingreso: agosto-2009 Ubicación: Venezuela
Mensajes: 82
Antigüedad: 15 años, 3 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?? |