Foros del Web » Programando para Internet » PHP »

Consulta Select en PHP sin conocer los filtros requeridos en la clausula WHERE

Estas en el tema de Consulta Select en PHP sin conocer los filtros requeridos en la clausula WHERE en el foro de PHP en Foros del Web. Saludos! Estoy haciendo un sistema orientado a la web con php y entre las funcionalidades del sistema esta la consulta de un documento, el sistema ...
  #1 (permalink)  
Antiguo 17/02/2017, 14:13
 
Fecha de Ingreso: enero-2015
Mensajes: 23
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Consulta Select en PHP sin conocer los filtros requeridos en la clausula WHERE

Saludos!

Estoy haciendo un sistema orientado a la web con php y entre las funcionalidades del sistema esta la consulta de un documento, el sistema me mostrara un formulario con varios filtros (input) para realizar dicha consulta, sin embargo los filtros no son obligatorios y el usuario solo ingresara el filtro que desee para realizar la consulta.

Mi pregunta es: ¿Cual es la mejor forma de realizar esta consulta cuando no conozco de antemano que filtros voy a usar para la clausula WHERE de la sentencia SELECT?

Lo que se me ocurre es verificar que filtros no se encuentran vacíos y de esta forma almacenar en una cadena mi consulta select e ir concatenando los campos correspondientes a los filtros que se ingresen y asi obtener mi setencia SELECT.

Quiero saber si esta la forma correcta de hacerlo, o me recomienda otra forma que sea más sencilla o técnicamente más eficiente?
  #2 (permalink)  
Antiguo 17/02/2017, 14:47
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Consulta Select en PHP sin conocer los filtros requeridos en la clausula W

Si pones los campos con los mismos nombres de las columnas, una aproximación sería:

Código PHP:
Ver original
  1. $filtros = array();
  2. foreach($_POST as $columna => $valor) {
  3.    // Solo si ´no están vacíos
  4.     if(!empty($valor)) {
  5.          $filtros[] = "$columna = '$valor'";
  6.     }
  7. }
  8.  
  9. // Se seleccionó algún filtro?
  10. $where = (count($filtros) == 0) ? '' : ' WHERE ' . implode(' OR ', $filtros);

Si los campos son char/varchar/text puedes usar LIKE '%$valor%' en lugar de = '$valor'; también puedes cambiar OR por AND, según te convenga.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: clausula, conocer, filtros, formulario, select, usuario
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 11:29.