Foros del Web » Programando para Internet » PHP »

Formulario de busqueda con Match y Against!

Estas en el tema de Formulario de busqueda con Match y Against! en el foro de PHP en Foros del Web. 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: ...
  #1 (permalink)  
Antiguo 13/08/2012, 15:14
 
Fecha de Ingreso: agosto-2009
Ubicación: Venezuela
Mensajes: 82
Antigüedad: 14 años, 8 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??
  #2 (permalink)  
Antiguo 13/08/2012, 15:34
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Formulario de busqueda con Match y Against!

Creo que el error se debe a que no se puede usar el %,
(lo probé y no es por eso)

http://dev.mysql.com/doc/refman/5.0/...t-boolean.html

Pero no estoy seguro.
Ejecuta la consulta en consola o phpmyadmin y postea el error que te da...
Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp

Última edición por portalmana; 13/08/2012 a las 15:40
  #3 (permalink)  
Antiguo 13/08/2012, 15:55
 
Fecha de Ingreso: agosto-2009
Ubicación: Venezuela
Mensajes: 82
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Formulario de busqueda con Match y Against!

Gracias, lo probare y escribo de nuevo!

Etiquetas: formulario, html, match, sql, busquedas, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:47.