Foros del Web » Programando para Internet » PHP »

Consulta con varias variables

Estas en el tema de Consulta con varias variables en el foro de PHP en Foros del Web. Buenas! Tengo un formulario php en el que introduzco dos variables y también tengo una constate, que pido antes de entrar al formulario. Estas son: ...
  #1 (permalink)  
Antiguo 08/06/2009, 09:01
Avatar de aliza  
Fecha de Ingreso: diciembre-2008
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 6
Consulta con varias variables

Buenas!

Tengo un formulario php en el que introduzco dos variables y también tengo una constate, que pido antes de entrar al formulario. Estas son:
Cte: $tarjeta
Variable 1: $id
Variable 2: $fecha

Pues bien, mediante ajax, mando a otro script los valores y hago una consulta a una base de datos mysql queriendo mostrar lo siguiente:
1) Si $fecha='' entonces mostrar todo el contenido de la tabla donde id='$id' Y tarjeta='$tarjeta'.
2) Si $id='' entonces mostrar todo el contenido de la tabla donde fecha>='$fecha' Y tarjeta='$tarjeta'.
3) Si $id y $fecha son distintos de '' entones mostrar todo el contenido de la tabla donde fecha>=$fecha Y id='$id' Y tarjeta='$tarjeta'.

El caso es que consigo hacerlo para una variable solo, pero cuando le meto las segunda ya no obtengo lo que necesito. Tiene que ser un problema de SQL, pero lo posteo aquí porque a su vez es un problema de php, ya que habrá que jugar con condicionales para hacer una consulta u otra.

Un saludo. Espero ayuda. Gracias.
__________________
Dando cabezados se aprende...
  #2 (permalink)  
Antiguo 08/06/2009, 09:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Consulta con varias variables

Pues logica simple:
Código php:
Ver original
  1. $query = 'SELECT * FROM `foo`';
  2. switch (true) {
  3. case empty($fecha):
  4.         $query .= "WHERE id='$id' AND tarjeta='$tarjeta'";
  5.         break;
  6. case empty($id):
  7.         $query .= "WHERE fecha>='$fecha' AND tarjeta='$tarjeta'";
  8.         break;
  9. default:
  10.         $query .= "WHERE fecha>='$fecha' AND id='$id' AND tarjeta='$tarjeta'";
  11. }

Saludos.
  #3 (permalink)  
Antiguo 08/06/2009, 09:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta con varias variables

si, tienes razón.... por eso debes aplicar un poco mas de análisis...

lo que expones en los incisos es correcto, ¿de donde viene el problema??

NOTA que lo debes hacer en cierto orden, que es, al revés de como propones... creo

primero compara si $id y $fecha no están vacíos, he ahí la primer consulta...

y luego descartas cualquiera de las otras dos, es muy simple, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 08/06/2009, 09:12
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Consulta con varias variables

$query = 'SELECT * FROM `foo`';
switch (true) {
case empty($fecha):
        $query .= "WHERE id='$id' AND tarjeta='$tarjeta'";
        break;
case empty($id):
        $query .= "WHERE fecha>='$fecha' AND tarjeta='$tarjeta'";
        break;
default:
        $query .= "WHERE fecha>='$fecha' AND id='$id' AND tarjeta='$tarjeta'";
}

Recuerda que en la DB debes darle su atributo correcto a fecha para que te pueda funcionar correctamente.
  #5 (permalink)  
Antiguo 08/06/2009, 09:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Consulta con varias variables

?? Porque publicas el mismo código que acabo de postear?
  #6 (permalink)  
Antiguo 08/06/2009, 09:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta con varias variables

no se que es mejor...


vs
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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:10.