FAQ
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">&nbsp;</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

Search Discussions

  • Juan Villa at Dec 8, 2010 at 11:15 pm
    Para esto existen las busquedas naturales full-text de mysql.

    En el siguiente link podras ver su funcionamiento.

    http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html

    Espero te sirva.
    Saludos!
  • Alfonso Alejandro Reyes Jimenez at Dec 8, 2010 at 11:22 pm
    Gracias por el link Juan, sin embargo al usar match estas uniendo en la búsqueda dos campos por decir categoría y tipo, lo que yo necesito es buscar dos valores en el mismo campo. Es decir necesito buscar comida y perro en el campo tipo.

    Saludos.



    Ing. Alfonso Alejandro Reyes Jiménez
    Analista del sector Gobierno

    E-mail: aareyes@scitum.com.mx
    Telefono: 91 50 74 00 ext. 7489
    Movil: (044) 55 52 98 34 82

    La información contenida en el presente correo es confidencial y para uso exclusivo de la persona o institución a que se refiere. Si usted no es el receptor deliberado es ilegal cualquier distribución, divulgación, reproducción, completa o parcial, aprovechamiento, uso o cualquier otra acción relativa a ella. Por favor notifique al emisor e inmediatamente bórrela de forma permanente de cualquier computadora en la que resida y en caso de existir, destruya cualquier copia impresa.



    -----Mensaje original-----
    De: juan.villa@aglsolutions.com En nombre de Juan Villa
    Enviado el: miércoles, 08 de diciembre de 2010 05:02 p.m.
    Para: php-es@lists.php.net
    Asunto: Re: [PHP-ES] ..::Busqueda::..

    Para esto existen las busquedas naturales full-text de mysql.

    En el siguiente link podras ver su funcionamiento.

    http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html

    Espero te sirva.
    Saludos!
  • Ricardo Martinez at Dec 8, 2010 at 11:17 pm
    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 <aareyes@scitum.com.mx>
    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">&nbsp;</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
  • Alfonso Alejandro Reyes Jimenez at Dec 8, 2010 at 11:25 pm
    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
    Enviado el: miércoles, 08 de diciembre de 2010 05:17 p.m.
    CC: php-es@lists.php.net
    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 <aareyes@scitum.com.mx>
    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">&nbsp;</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
  • José Yepes at Dec 9, 2010 at 12:40 am
    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 <
    aareyes@scitum.com.mx> 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
    Enviado el: miércoles, 08 de diciembre de 2010 05:17 p.m.
    CC: php-es@lists.php.net
    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 <aareyes@scitum.com.mx>
    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">&nbsp;</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!!"
  • Roberto Carlos García Luis at Dec 9, 2010 at 3:04 am
    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" <electricyepes@gmail.com>
    To: "Alfonso Alejandro Reyes Jimenez" <aareyes@scitum.com.mx>
    Cc: "Ricardo Martinez" <hariseldom@gmail.com>, php-es@lists.php.net
    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 <
    aareyes@scitum.com.mx> 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
    Enviado el: miércoles, 08 de diciembre de 2010 05:17 p.m.
    CC: php-es@lists.php.net
    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 <aareyes@scitum.com.mx>
    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">&nbsp;</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!!"

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedDec 8, '10 at 10:26p
activeDec 9, '10 at 3:04a
posts7
users5
websitephp.net

People

Translate

site design / logo © 2022 Grokbase