Foros del Web » Programando para Internet » PHP »

problemita con consulta SQL

Estas en el tema de problemita con consulta SQL en el foro de PHP en Foros del Web. Saludos buenass de nuevo :) Resulta que ya tengo casi acabado un gran proyecto pero estoy atascado en esta chorrada.. Me explico: Tengo un formulario ...
  #1 (permalink)  
Antiguo 24/08/2009, 06:58
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
problemita con consulta SQL

Saludos buenass de nuevo :)

Resulta que ya tengo casi acabado un gran proyecto pero estoy atascado en esta chorrada..

Me explico: Tengo un formulario con 6 campos. 3 de esos campos es obligatorio rellenarlos, y los otros 3 es opcional, es decir, o bien no se rellenan (y mandan un valor vacío), o bien se rellena 1, 2, o los 3

Cuando lanzo la consulta MySQL todo funciona bien, pero no se como ponerle en la consulta para que si se ha rellenado un campo de los opcionales busque también esa condición, si se han rellenado los dos, busque también las dos condiciones, y así sucesivamente..

Os pongo un ejemplo "ilustrativo"

// Mi buscador:

¿Color? >> Verde/Rojo/Amarillo (Campo obligado)
¿Olor? >> Húmedo/Seco (Campo obligado)
¿Textura? >> Suave/Rugosa (Campo obligado)

¿Tamaño? >> Grande/Pequeño (Campo opcional)
¿Duración? >> Mucha/Poca (Campo opcional)
¿Calidad? >> Gran/Poca (Campo opcional)

// Por ejemplo, a la hora de lanzar la consulta imaginemos que no se selecciona ningún campo opcional, pues buscaría entre esas 3 clausulas (color,olor,textura), si se ha seleccionado por ejemplo tamaño y calidad, también buscaría entre tamaño y calidad..

¿Alguna idea de como "fusionar" todo esto en una consulta SQL? PD: Lo tengo todo programado en PHP

Un saludoo,
Graciass ;)
  #2 (permalink)  
Antiguo 24/08/2009, 07:07
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: problemita con consulta SQL

mmm...
la verdad es que no entendi mucho y hay cosas que me quedan dando vuelta

- tienes todos esos campos en la misma tabla en la base de datos?
- y lo otro... estás haciendo una busqueda a traves de un combobox? u otra opción?

de ser asi, simplemente debes hacer consultas simples
si hay campos vacios simplemente no devolvera nada.


si no es lo que quieres favor de ser un poco más especifico, saludos!
  #3 (permalink)  
Antiguo 24/08/2009, 07:19
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problemita con consulta SQL

hola, perdona por ser tan abstracto jeje

- tengo todos los campos en la misma tabla de la db sí
- estoy haciendo la búsqueda a través de combos y de listbox (los combos son las opciones que siempre se rellenan, y los listbox son las opcionales, por lo tanto hay 1 opción en el listbox que es todo y envía un valor en blanco)

ejemplo consulta:

$consulta = "SELECT texto FROM textos WHERE valor1='$valor1' AND valor2='$valor2' AND valor3='$valor3' AND opcional1='$opcional1' AND opcional2='$opcional2' AND opcional3='$opcional3'";

Si hago ese tipo de consulta y no relleno todos los campos no me devuelve nada, yo lo que quiero es que si por ejemplo selecciono un campo opcional solo consulte en ese y en los requeridos y se salte el ... AND opcional2... AND opcional3...

¿Entiendes?
Graciasss ;)
  #4 (permalink)  
Antiguo 17/09/2009, 09:02
Avatar de marie_mar  
Fecha de Ingreso: septiembre-2009
Mensajes: 26
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: problemita con consulta SQL

Hola:
Ya pasé por eso mismo. Lo único que tienes que hacer es preguntar si esos campos existen y no están vacíos. Asumo que las variables son POST. Te quedaría más o menos así:

$consulta = "SELECT texto FROM textos WHERE valor1='$valor1' AND valor2='$valor2' AND valor3='$valor3' ";

if ($_POST['opcional1'] && $opcional1!='')
$consulta .= " AND " .$opcional1 ." = '" .$opcional1 ."' ";

if ($_POST['opcional2'] && $opcional2!='')
$consulta .= " AND " .$opcional2 ." = '" .$opcional2 ."' ";

if ($_POST['opcional3'] && $opcional3!='')
$consulta .= " AND " .$opcional3 ." = '" .$opcional3 ."' ";
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 19:07.