Query con criterios Dinámicos

Jose Miguel Vidal Lavin jmvidal en sertotal.cl
Mie Nov 14 11:27:35 CLST 2007


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