Re: [PHP-ES] ..::Busqueda::..
[email protected] (Roberto Carlos García Luis)
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <15274277.6.1291861589234.JavaMail.rkgarcia@petra> |
Bueno dejando a un lado que soy un novato sugiero lo siguiente: Crear un arreglo con las palabras comunes que quieres eliminar(para, por, de, etc etc etc) depuras tu cadena obtenida del form y le quitas las palabras comunes contenidas en el arreglo, despues separas tus palabras que te importan y haces generas una consulta del tipo $sql = "SELECT campos FROM tabla WHERE "; $sql .= "campodondebusco like %palabra1% "; $sql .= "AND campodondebusco like %palabra2%"; bueno es una sugerencia codificandolo el SQL lo generas automaticamente, que les parece mi posible solución?? Saludos From: "José Yepes" <[email protected]> To: "Alfonso Alejandro Reyes Jimenez" <[email protected]> Cc: "Ricardo Martinez" <[email protected]>, [email protected] Sent: Miércoles, 8 de Diciembre 2010 18:40:22 Subject: Re: [PHP-ES] ..::Busqueda::.. Buena noche a todos desde Monterrey, México. A mi gusto creo que se están complicando demasiado la vida :P Simplemente... ¿porqué no pruebas separar cada palabra y buscar los registros con CADA UNA de las palabras, y ya después juntas los resultados? Por ejemplo <?php //Arreglo de palabras clave; // LO QUE ESTA ENTRE COMILLAS ES UN ESPACIO SIMPLE $busqueda = explode(" ", $_GET["search"]); foreach($busqueda as $palabra) { $query_Productos = "SELECT Clave, Descripcion, Familia, Publico FROM productos_publicados WHERE Categoria like '%$palabra%' OR Familia like '%$palabra%' OR Descripcion like '%$palabra%' OR Fabricante like '%$palabra%' ORDER BY Clave ASC"; //AQUI RECOGERIAS LOS REGISTROS QUE TE ARROJA CADA PALABRA, EN UN ARREGLO, QUE SE YO?? ;) } unset($palabra) ?> Y pues al final juntas los resultados o haces con los registros lo que creas más conveniente. Espero que te sea útil esta idea. Saludos! El 8 de diciembre de 2010 17:25, Alfonso Alejandro Reyes Jimenez < [email protected]> escribió: > Gracias Ricardo es mas o menos lo mismo que me hizo favor de mandar Juan, > sin embargo necesito buscar dos palabras en el mismo campo, no unirlas :( > > Saludos. > > > > De: Ricardo Martinez [mailto:[email protected]] > Enviado el: miércoles, 08 de diciembre de 2010 05:17 p.m. > CC: [email protected] > Asunto: Re: [PHP-ES] ..::Busqueda::.. > > Hola Alfonso, > la verdad que es un problema interesante, te paso un link interesante > donde tratan esto. > Si alguien conoce alguna solución mejor, estaría bien verla. > > http://www.desarrolloweb.com/articulos/2087.php > > En esta web, comprueba el número de palabras, si solo contiene una > palabra ( la búsqueda ), entonces lo hacen con like. > > Si es una cadena de palabras, implementan una solución con MATCH > (TITULO,DESARROLLO) AGAINST ('$busqueda') > pero que tiene algún inconveniente también porque hay que poner las > palabras clave de cada tabla por lo que veo. > > Un saludo! > > 2010/12/8 Alfonso Alejandro Reyes Jimenez <[email protected]> > > > > Hola a todos. > > > > > > > > Tengo un cuadro de búsqueda al inicio de la pagina, hice un formulario > para enviar lo que sea escrito en el hacia el url, una vez que lo mande a la > página de búsqueda con el texto incluido tomo la información para generar un > query en mysql. > > > > > > > > Si escribo por ejemplo perro, funciona de maravilla, pero si escribo > comida para perro me marca que no hay registros. La idea es que quite "para" > y entregue los resultados que coincidan con comida y perro. > > > > > > > > El formulario tiene el siguiente código: > > > > > > > > <form id="productos" method="GET" action="catalogo_ventas.php" > > > <table width="100%" border="0" cellspacing="0" > cellpadding="5"> > > <tr> > > <td height="60"> </td> > > </tr> > > <tr> > > <td><label> > > <div align="center"> > > <input type="text" name="search" > style="text-transform: uppercase"> > > </div> > > </label></td> > > </tr> > > <tr> > > <td><div align="center"><a href="# > <view-source:http://www.happypetmexico.com/index.html> " > onmouseout="MM_swapImgRestore()" > onmouseover="MM_swapImage('search','','images/button_search_rollover.png',1)"> > > <input type="image" > src="images/button_search.png <view-source: > http://www.happypetmexico.com/images/button_search.png> " alt="Submit > Form" align="middle" width="90" height="26" border="0" /> > > </a></div></td> > > </tr> > > </table> > > </form> > > > > Y la pagina de búsqueda: > > > > <?php $busqueda = $_GET["search"]; > > $query_Productos = "SELECT Clave, Descripcion, Familia, Publico FROM > productos_publicados WHERE Categoria like '%$busqueda%' OR Familia like > '%$busqueda%' OR Descripcion like '%$busqueda%' OR Fabricante like > '%$busqueda%' ORDER BY Clave ASC";?> > > > > Lo depure para no hacer un correo enorme. > > > > Cualquier ayuda es bienvenida, gracias de antemano. > > > > > > > > Saludos. > > > > > > > > Alfonso > > > > > > > > > > -- > Ricardo > _______________________________________________ > IT Architect > website: http://www.pulsarinara.com > > -- > PHP Spanish Localization Talk Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > > -- > PHP Spanish Localization Talk Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- "No te esfuerzes tanto. Las mejores cosas de la vida suceden cuando menos te las esperas!!"