Foros del Web » Programando para Internet » PHP »

Consulta con opciones

Estas en el tema de Consulta con opciones en el foro de PHP en Foros del Web. Hola, de antemano gracias por este espacio para resolver dudas! Mi inquietud es la siguiente, tengo una BD donde hay registradas unas personas y los ...
  #1 (permalink)  
Antiguo 27/08/2012, 12:29
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 1 mes
Puntos: 1
Consulta con opciones

Hola, de antemano gracias por este espacio para resolver dudas!

Mi inquietud es la siguiente, tengo una BD donde hay registradas unas personas y los campos son nombre y sexo. Yo tengo un formulario en donde selecciono si quiero q me muestre hombres, o mujeres o si es indiferente el genero. el valor de hombre es 1, el de mujer es 2 y el de hombre o mujer es 3

al mostrar los resutaldos debo hacer la consulta en donde le digo q me muestre las personas cuando el sexo es igual al valor q envia el formulario. Si es hombre, perfecto, si es mujer, perfecto, pero si es indiferente no he conseguido como hacerlo.

inicialmente se me ocurre
if ($_POST["genero"]==1)
{$genero==1;}
else if ($_POST["genero"]==2)
{$genero==2;};

y no encuentro como decirle q de los contrario me muestre hombres y mujeres.

Gracias
  #2 (permalink)  
Antiguo 27/08/2012, 12:31
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Consulta con opciones

Un último else (sin condición, ya que no quedan más opciones).

Código PHP:
Ver original
  1. if ($_POST["genero"]==1)
  2. {
  3.      $genero = 1;
  4. }
  5. else if ($_POST["genero"]==2){
  6.          $genero = 2;
  7. }else{
  8.             $genero = 3;
  9. }

Recordá que "==" compara, mientras que "=" asigna.
Se entiende?
  #3 (permalink)  
Antiguo 27/08/2012, 12:37
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: Consulta con opciones

OK, gracias, pero bueno, si al hacer la consulta yo le digo

$qPR = mysql_query("select Id_unico from perfiles where
genero='$genero';",$conn);

al enviar y decirle q me busque tanto hombre como mujeres va a resultar vacio ya q va a comparar el valor con 3, es decir, va a buscar todos en donde el sexo sea igual a 3 y deberia ser que me busque todos cuando el sexo es 1 o 2.
  #4 (permalink)  
Antiguo 27/08/2012, 12:43
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Consulta con opciones

Cita:
Iniciado por cabeto_1972 Ver Mensaje
OK, gracias, pero bueno, si al hacer la consulta yo le digo

$qPR = mysql_query("select Id_unico from perfiles where
genero='$genero';",$conn);

al enviar y decirle q me busque tanto hombre como mujeres va a resultar vacio ya q va a comparar el valor con 3, es decir, va a buscar todos en donde el sexo sea igual a 3 y deberia ser que me busque todos cuando el sexo es 1 o 2.
Ok. Entendí. Podrías aplicar un poquito de "hacking".
Definí una variable $where (vacía).
En el primer if, asignale la clausula SQL que corresponda ( where genero = 1).
Lo mismo para el segundo, el tercero, borralo porque no hace falta.
Lugo concatenas la variable $where a la query y listo !.
¿Se entiende?.
Estás construyendo dinámicamente una query.
  #5 (permalink)  
Antiguo 27/08/2012, 12:47
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Consulta con opciones

Te paso en limpio, un ejemplo:
Código PHP:
Ver original
  1. $where = "";
  2. if ($_POST["genero"]==1)
  3. {
  4.     $where = "WHERE genero = 1"
  5. }else{
  6.     $where = "WHERE genero = 2"
  7. }
  8.  
  9. $query = "SELECT Id_unico FROM perfiles $where";
  10. $res = mysql_query($query,$link);
  11.  
  12. /*
  13. *   Todo lo demás.
  14. */

Se entiende ? para el caso de todos los géneros, concatenas $where, que está vacia, por lo que no influiría en la estructura de la consulta.
  #6 (permalink)  
Antiguo 27/08/2012, 12:47
 
Fecha de Ingreso: marzo-2011
Mensajes: 70
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Consulta con opciones

pues algo que se me ocurre es darle un valor en el ultimo else a $genero = 1 or 2;
le concatenas el or para que te aparescan los valores 1 o 2, saludos.
  #7 (permalink)  
Antiguo 27/08/2012, 12:48
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: Consulta con opciones

Sip en realidad es mucho mas q esa consulta, es un perfil de usuarios donde no solo se compara el sexo, se compara la ciudad, si tiene carro, si tiene visa, cosas asi, pero como son tantas variables se me ocurria capturar los valores antes de hacer las consultar, por eso capturo el dato del sexo asi, tambien puede pasar q no importe q la persona tenga carro, pero no quiere decir q descartes a quienes lo tienen, por ejemplo, si al buscar la opcion tener carro esta marcada quiere decir q me muestre todos los que tienen carro, de lo contrario no se fije en esa opcion...pense que si consultaba con uds. la parte de referirse al sexo la tendria mas clarar para lo demas.. pero no soy experto en estas cosas y siempre trato de hacerlo yo mismo con lo poco q se o lo q alcance a encontrar en google, si ya definitivamente no puedo, lo consulto aqui. Lo que me sugieres hacer en realidad no se como hacerlo :s
  #8 (permalink)  
Antiguo 27/08/2012, 12:49
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Consulta con opciones

Cita:
Iniciado por June310 Ver Mensaje
pues algo que se me ocurre es darle un valor en el ultimo else a $genero = 1 or 2;
le concatenas el or para que te aparescan los valores 1 o 2, saludos.
Con respeto, al pedo forzar a que MySQL ejecute una clausula que no es necesaria, ya que si no especifica un where, muestra ambos sexos (lo que sería la opción 3).
Ojo, si no entendí mal je.-
  #9 (permalink)  
Antiguo 27/08/2012, 12:50
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: Consulta con opciones

UPs lo siento, lo voy a probar, no me habia llegado el ejemplo antes de enviar el comentario anterior
  #10 (permalink)  
Antiguo 27/08/2012, 12:52
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: Consulta con opciones

Un switch tambien podria certe de ayuda
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #11 (permalink)  
Antiguo 27/08/2012, 13:13
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: Consulta con opciones

ja, ninguna de las anteriores!

Etiquetas: formulario, opciones
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 17:45.