Foros del Web » Programando para Internet » PHP »

consulta mysql

Estas en el tema de consulta mysql en el foro de PHP en Foros del Web. Hola A ver si ahora me explico que llevo ya bastante tiempo con el mismo tema.. Tengo un formulario, pongamos con 5 variables: valor1,valor2,valor3,valor4,valor5. A ...
  #1 (permalink)  
Antiguo 08/09/2009, 01:02
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 11 meses
Puntos: 0
consulta mysql

Hola

A ver si ahora me explico que llevo ya bastante tiempo con el mismo tema..

Tengo un formulario, pongamos con 5 variables: valor1,valor2,valor3,valor4,valor5. A la hora de hacer la búsqueda y rellenar estos campos yo puedo rellenar 1,2,3,4 ó los 5 campos, en el orden que yo quiera.

En la tabla de la mysql pongamos que tengo las 5 columnas con cada uno de estos campos: valor1,valor2,valor3,valor4 y valor5.

Cuando realizo la consulta mysql para buscar los valores de la base de datos, hago un simple.. $consulta = "SELECT * FROM valores WHERE valor1 = '$valor1' AND valor2 = '$valor2'"; .. y así sucesivamente.

Pero, ¿qué pasa? Que cuando no relleno alguno de estos campos del formulario se le pasa una variable en blanco a la consulta y lógicamente no busca nada mostrando un resultado en blanco.

¿Hay alguna forma de unificar este buscador en una única consulta mysql, sin utilizar condicionales? Por ejemplo, diciéndole a la consulta mysql que si el valor está blanco saque todos los posibles valores de la columna de ese valor en blanco?

Espero haberme explicado
Un saludoo y gracias ;)
  #2 (permalink)  
Antiguo 08/09/2009, 01:14
Avatar de conkerick  
Fecha de Ingreso: febrero-2009
Ubicación: WWW
Mensajes: 75
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: consulta mysql

Creo que el uso de condicionales es mejor, y en caso de que sea posible sin ellos, estaré atento al dato.

Saludos.
  #3 (permalink)  
Antiguo 08/09/2009, 01:30
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: consulta mysql

cierto, de hecho yo juraría que lo conseguí hacer sin condicionales, porque tener condicionales para si este valor esta lleno tal si este tal tal , puff es bastante lío de hecho por ahorrar tiempo voy a hacer así el código y si se me acuerdo de como hacerlo sin condiciones te lo comento


graciasss =D
  #4 (permalink)  
Antiguo 08/09/2009, 07:26
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 15 años, 4 meses
Puntos: 13
Respuesta: consulta mysql

lamentablemente no sabemos a que te refieres con valor1, valor2, etc...
pero puedes hacer la busqueda con un solo condicional del where, osea que muestre todos los valores donde valor1=$valor1, en este caso da lo mismo si los demas valores están vacios o llenos.


Cita:
Iniciado por prodigic Ver Mensaje
Por ejemplo, diciéndole a la consulta mysql que si el valor está blanco saque todos los posibles valores de la columna de ese valor en blanco?
eso es imposible, si el campo está en blanco entonces que sacarás? si no hay nada :P
__________________
Mi Bosque de Sombras Solo Doom Metal!

por favor use esta etiqueta para publicar su código --->[HIGHLIGHT]
  #5 (permalink)  
Antiguo 08/09/2009, 08:44
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: consulta mysql

Hola amigo, si les estás indicando con un AND la consulta de los valores, automáticamente estas pidiendo que los campos "tengan algo", ya sea espacio en blanco o un valor, es decir con el uso del AND estas forzando a que exista algo, si te es permitido para tu sistema utilizar OR,

$consulta = "SELECT * FROM valores WHERE valor1 = '$valor1' OR valor2 = '$valor2'"; ..

Así si alguno de los valores coincide, te mostrará los datos, lo que entiendo es que con uno o más valores que coincida quieres mostrarlo?

Saludos
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 13:08.