Foros del Web » Programando para Internet » PHP »

OR en mysql

Estas en el tema de OR en mysql en el foro de PHP en Foros del Web. Saludos Resulta que tengo un formulario con varias opciones, las cuales pueden estar todas marcadas, varias o ninguna de ellas. Lógicamente según lo que esté ...
  #1 (permalink)  
Antiguo 07/09/2009, 11:39
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
OR en mysql

Saludos

Resulta que tengo un formulario con varias opciones, las cuales pueden estar todas marcadas, varias o ninguna de ellas.

Lógicamente según lo que esté marcado buscará una cosa u otra, por ejemplo si el checkbox color verde está marcado buscará el color verde, si también esta marcado el checkbox de color rojo buscará el color rojo.. Si no hay marcado ninguno buscará todos los colores.

Recuerdo que esto lo hice una vez con mysql poniendo OR y paréntesis, por ejemplo: select * from datos where (color='$rojo') OR (color='$verde')...

¿Me podéis orientar? Las vacaciones me han sentado mal ya que no recuerdo como lo hice y lo malo es que perdí el código :(

Graciass,
Un saludo :)
  #2 (permalink)  
Antiguo 07/09/2009, 11:55
Avatar de pipev25  
Fecha de Ingreso: septiembre-2009
Mensajes: 93
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: OR en mysql

Cita:
Iniciado por prodigic Ver Mensaje
Saludos

Resulta que tengo un formulario con varias opciones, las cuales pueden estar todas marcadas, varias o ninguna de ellas.

Lógicamente según lo que esté marcado buscará una cosa u otra, por ejemplo si el checkbox color verde está marcado buscará el color verde, si también esta marcado el checkbox de color rojo buscará el color rojo.. Si no hay marcado ninguno buscará todos los colores.

Recuerdo que esto lo hice una vez con mysql poniendo OR y paréntesis, por ejemplo: select * from datos where (color='$rojo') OR (color='$verde')...

¿Me podéis orientar? Las vacaciones me han sentado mal ya que no recuerdo como lo hice y lo malo es que perdí el código :(

Graciass,
Un saludo :)
Ole sino estoy mal para el OR debes encerrar en parentesis toda la comparación del WHERE asi:

WHERE (color=$rojo OR color=$verde)
  #3 (permalink)  
Antiguo 07/09/2009, 12:27
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: OR en mysql

Cierto, 1000 gracias.. yo y los paréntesis nos llevamos mal jaja, pero ahora tengo una duda..

Mira en el formulario real de mi aplicación puedo buscar por provincia y por zona, pero o bien pongo provincia o bien zona o bien las dos a la vez.. entonces:

.. WHERE (province='$provincia' OR zone='$zona') , eso no me sirve porque cuando alguna de las dos variables están en blanco se queda en blanco la consulta MySQL , osea no devuelve nada..

Solo me falta esto por arreglar.. ¿En qué estoy fallando?

Mil gracias por tu tiempo =)
  #4 (permalink)  
Antiguo 07/09/2009, 12:34
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: OR en mysql

Normal que se quede en blanco si no existe :S por que estás buscando lo que hay dentro de esas dos variables y si no existe, ¿que va a mostrar?, digo yo que es lógico, lo que puedes hacer es poner dentro de la consulta en vez de

Código:
WHERE (province='$provincia' OR zone='$zona')
pones

Código:
$where
y luego, encima de la consulta

Código:
if (!empty($provincia) or empty($zona)) {
$where="WHERE (province='$provincia' OR zone='$zona')";
}
así solo se pondrá el where si alguna de las dos variables tienen algo y sino, pues no se pondrá el where y saldrá todo lo que haya en la tabla.

saludos.
  #5 (permalink)  
Antiguo 08/09/2009, 00:16
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: OR en mysql

Juraría que hace tiempo lo hice solamente a base de paréntesis o de OR , de forma que si una parte de la consulta no tenía nada saltaba al resto de la consulta.. ¿ A alguien se le ocurre algo ? De todos modos, mil gracias =D
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 03:02.