Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta con 3 campos

Estas en el tema de Consulta con 3 campos en el foro de PHP en Foros del Web. Buenas a todos. Estoy realizando una consulta a la base de datos desde un formulario. El formulario tiene tres campos no obligatorios: Provincia, Localidad y ...
  #1 (permalink)  
Antiguo 23/07/2014, 04:16
 
Fecha de Ingreso: julio-2014
Mensajes: 9
Antigüedad: 9 años, 9 meses
Puntos: 0
Consulta con 3 campos

Buenas a todos.

Estoy realizando una consulta a la base de datos desde un formulario.

El formulario tiene tres campos no obligatorios: Provincia, Localidad y un tercer campo tipo "SET".

Mi intención es que el usuario pueda buscar por cualquiera de los campos de forma única, que pueda hacerlo metiendo dos de ellos o metiendo valor a los 3.

Actualmente lo que tengo es una select así:

select * from directorio where provincia='".$provincia."' or localidad='".$poblacion."' or preferencias='".$gustos."' order by nombre

Obviamente está mal porque si mete una provincia y una preferencia aparecen todas las provincias y todas las preferencias.
Lo que me gustaría es que en ese caso sólo apareciesen las provincias donde se den esas preferencias.

¿Alguien tiene alguna sugerencia?

¡¡Muchísimas gracias!!
  #2 (permalink)  
Antiguo 23/07/2014, 04:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta con 3 campos

Construir la consulta dinámica, de modo de agregar las condiciones de acuerdo a lo que el usuario ingresó.
Es tema de programación.

Movido a PHP
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/07/2014, 04:32
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Consulta con 3 campos

Si lo que pretendes es realizar un buscador tiene que ser asi:

Código MySQL:
Ver original
  1. SELECT * FROM directorio WHERE provincia LIKE "%$provincia%" OR localidad LIKE "%$poblacion%" OR preferencias LIKE "%$gustos%" ORDER BY nombre

Ya despues quedaria comprobar si introduce provincia, localidad, etc... con php u otro lenguaje.

Saludos.
  #4 (permalink)  
Antiguo 23/07/2014, 04:50
 
Fecha de Ingreso: julio-2014
Mensajes: 9
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Consulta con 3 campos

Muchas gracias, pensé que era un tema a resolver con sql.

MaNu, por lo que me dices debería controlar si ha dejado un campo vacío...

¿y si lo ha dejado vacío que debería hacer?¿asignarle un valor por defecto a los campos?
Si ese es el caso ¿qué valor debería asignarle para que equivaliese a todos los registros de la base de datos?

Muchísimas gracias!!

PD: Estoy utilizando PHP.
  #5 (permalink)  
Antiguo 23/07/2014, 05:07
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Consulta con 3 campos

Eliminado sorry.
  #6 (permalink)  
Antiguo 23/07/2014, 05:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta con 3 campos

A ver si se entiende la idea de qué es crear condiciones dinámicamente:

Código PHP:
Ver original
  1. <?php
  2. ...
  3. //capturo las variables enviadas desde el formulario via POST
  4. $provincia=$_POST["provincia"];
  5. $poblacion=$_POST["poblacion"];
  6. $gustos=$_POST["gustos"];
  7.  
  8. $sql="SELECT * ";
  9. $sql.="FROM directorio ";
  10. $sql.="WHERE 1 ";
  11.  
  12.  //  El "1" es para no complicar la construccion del WHERE
  13.  
  14. if(isset($provincia) && $provincia != "")
  15. {
  16.     $sql.=" AND provincia='".$provincia."' ";
  17. }
  18. if(isset($poblacion) && $poblacion != "")
  19. {
  20.     $sql.=" AND localidad='".$poblacion."' ";
  21. }
  22. if(isset($gustos) && $gustos  != "")
  23. {
  24.     $sql.=" AND preferencias='".$gustos."' ";
  25. }
  26.  
  27. // cerramos con el ORDER BY:
  28.  
  29. $sql.=" ORDER BY nombre";
  30.  
  31. /// El resto del código, incluyendo validacion de que consulte bien
  32. ...
  33. ?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 24/07/2014, 01:20
 
Fecha de Ingreso: julio-2014
Mensajes: 9
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Consulta con 3 campos

Muchísimas gracias, de verdad!!!

He editado un poco el código.

Inicio las variables a "Todas" en lugar de "".
Añado en ELSE ya que en el caso de que la variable no sea null y sea "Todas" no añade código a la sentencia SQL. Añádiendolo en el ELSE a esa condición.

Gracias, habéis sido de gran ayuda!!!

Última edición por Fronesis; 24/07/2014 a las 01:47

Etiquetas: campo, campos, mysql, select
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 15:57.