RE: Query con criterios Dinámicos

Andres Ossa aossa en tehmcorp.com
Mie Nov 14 12:27:08 CLST 2007


Muchas Gracias a todos, voy a probar y les cuento.

-----Mensaje original-----
De: php-bounces en listas.inf.utfsm.cl [mailto:php-bounces en listas.inf.utfsm.cl]
En nombre de Jose Miguel Vidal Lavin
Enviado el: Miércoles, 14 de Noviembre de 2007 11:28
Para: Lista de desarrolladores en PHP
Asunto: Re: Query con criterios Dinámicos 

Andres Ossa escribió:
> Saludos. 
>
> Necesito realizar una búsqueda con criterios dinámicos utilizando PHP y
> Mysql. 
>
> Tengo el siguiente formulario (por ej.), realizado en html, en donde "[
]",
> representa una caja de texto: 
>
> Rut Cliente : [ ] 
> N° Documento : [ ] 
> Fecha de Pago: [ ] 
> Monto : [ ] 
>
> La idea es realizar una consulta con los criterios de las cajas de texto
que
> tengan algun valor, es decir, al ingresar un rut, busque solo por el rut,
a
> su vez, si se ingreso un Monto y una Fecha de Pago, realice la consulta
con
> ambos criterios. Permitiendo dejar en libertad al usuario para que busque
> con los datos que tiene en el momento. 
>
> Preguntas. 
> 1.- Incorporar Opción de ir a registro siguiente y anterior. 
> Rut Cliente: Al buscar un documento utilizando el rut, arrojará varios
> resultados por eso me gustaría incluir la opción de ir al siguiente
registro
> y a su vez regresar al anterior. 
>
> 2.- Criterio de búsqueda múltiple. 
> Utilizar el mismo formulario utilizando solo un campo como criterio de
> búsqueda o realizar una combinación entre ellos, por ejemplo: Buscar por
> monto y fecha de pago y Rut.
>
>
>   
lo que podrias hacer es generar un string con el resultado de tu 
busqueda, ejemplo:

        $select = "SELECT * ";
        $from = "FROM info as a ";
        $order = "ORDER BY a.rut ";
        $limit = " ";

        $sw = 0;
        if($busqueda <> "")
        {
                if ($op == 1)
                {
                        $where = "WHERE a.rut like '$busqueda%' ";
                        $sw = 1;
                }

                if ($op == 2)
                {
                        $where = "WHERE a.zncnfono = '$busqueda' ";
                        $sw = 1;
                }

                if ($op == 3)
                {
                        $where = "WHERE a.nombre like '%$busqueda%' ";
                        $sw = 1;
                }

                if ($op == 4)
                {
                        $where = "WHERE a.dir_calle like '%$busqueda%' ";
                        $sw = 1;
                }
                $sql = $select . $from . $where . $group . $order . $limit;
        }
        $result = mysql_db_query( $mysql_db, $sql ) or die ("Error : 1" 
.  mysql_error()) ;

asi armaras tu sql a medida

en el mismo ejemplo resuelves el tema de mostrar la info por pantalla, 
usa limit para enviar por decir, de 25 lineas por pantallas.

saludos
   




Más información sobre la lista de distribución PHP