Foros del Web » Programando para Internet » PHP »

Consulta condicional

Estas en el tema de Consulta condicional en el foro de PHP en Foros del Web. Hola, en realidad no se si llamarla así o recibe otro nombre... Sigo aprendiendo, avanzo despacio... pero bueno... La pregunta que quería hacer es: quiero ...
  #1 (permalink)  
Antiguo 24/11/2016, 14:18
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Consulta condicional

Hola, en realidad no se si llamarla así o recibe otro nombre... Sigo aprendiendo, avanzo despacio... pero bueno... La pregunta que quería hacer es: quiero ejecutar una consulta desde un formulario donde no siempre vendrán todos los campos, puede venir uno, tres, todos... Según lo tengo, de momento necesito tener el primero después de WHERE para que me funcione la consulta, los siguientes valores de la consulta vienen con AND, ahí me encuentro el problema, si no tengo el primero, el siguiente en el echo de la query me da error porque pone WHERE AND ...
La consulta es:
Código PHP:
$query "Select id, idcountry, idspecie, idstage, name, 
        description, weather, date,
        idseason, season, idschool, name
        FROM base.vw_observa where "
;
        
if(
$_POST["country"] != ""){
    
$query .= " idcountry = '$pais'";
}
if(
$_POST["school"] != ""){
    
$query .= " and idschool ='$colegio'";
}
if(
$_POST["specie"] != ""){
    
$query .= " and idspecie = '$especie'";
}
if(
$_POST["fenomeno"] != ""){
    
$query .= " and idstage = '$fenomeno'";
}
if(
$_POST["crono"] != ""){
    
$query .= " and idseason = '$estacion'";
}

$query .= ' ORDER BY idspecie'
He probado varías cosas, pero no acierto.
Agradecería alguna pista/ayudita. Saludos.
  #2 (permalink)  
Antiguo 24/11/2016, 14:24
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Consulta condicional

Hola emeotero,

Yo probaría así...

Código PHP:
Ver original
  1. $query = "Select id, idcountry, idspecie, idstage, name,
  2.        description, weather, date,
  3.        idseason, season, idschool, name
  4.        FROM base.vw_observa where 1 = 1";
  5.        
  6. if($_POST["country"] != ""){
  7.     $query .= "AND idcountry = '$pais'";
  8. }
  9. //... resto de tu código

Espero que te sirva...
  #3 (permalink)  
Antiguo 25/11/2016, 05:58
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Consulta condicional

Hola rbczgz,
antes de nada gracias por contestar. He probado lo que me has dicho y si ejecuto la consulta para el primero me sale efectivamente:
Código:
where 1 = 1 and  idcountry = '6'
pero si paso del primero y pido el siguiente me mete comillas en blanco

Código:
Select id, idcountry, idspecie, idstage, name, 
        description, weather, date,
        idseason, season, idschool, name
        FROM base.vw_observa where 1 = 1 '' and idschool ='1' ORDER BY idspecie<br />
<b>Warning</b>:  pg_query(): Query failed: ERROR:  syntax error at or near &quot;''&quot;
LINE 5:   FROM base.vw_observa where 1 = 1 '' and idschool...
  #4 (permalink)  
Antiguo 25/11/2016, 06:00
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Consulta condicional

UPS! perdona rbczgz fallo mio!! me había quedado una linea de un else de una de las pruebas que hice.
Efectivamente funciona. Gracias!!

  #5 (permalink)  
Antiguo 25/11/2016, 11:17
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Consulta condicional

Hola emeotero,

Me alegro de que te funcione, no olvides marcar el tema como solucionado por si alguien viene buscando por un problema similar al tuyo, sepa que aquí está la solución.

Etiquetas: condicional, formulario, select
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 06:09.