Foros del Web » Programando para Internet » PHP »

error tonto en un simple IF

Estas en el tema de error tonto en un simple IF en el foro de PHP en Foros del Web. Hola... Parezco que estoy dormido, pero tengo un problema simple no logro visualizar mi error... Tengo, $q_existe="SELECT * FROM foto_album WHERE id_foto=$id_foto AND usuario='$usuario'"; $e_existe=pg_query($q_existe) ...
  #1 (permalink)  
Antiguo 19/09/2005, 12:35
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
error tonto en un simple IF

Hola...

Parezco que estoy dormido, pero tengo un problema simple no logro visualizar mi error...

Tengo,
$q_existe="SELECT * FROM foto_album WHERE id_foto=$id_foto AND usuario='$usuario'";
$e_existe=pg_query($q_existe)
$var=pg_fetch_array($e_existe); echo "valor de privado: ".$var[2];
if ($var[2]) {
$priv="Privada"; echo $priv;
} else {
$priv="Pública"; echo $priv;
}

Donde, el campo correspondiente, es de tipo boolean. (en Postgresql)

Pero no evalua la condición, siempre me arroja verdadero

Gracias de una
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 19/09/2005, 12:47
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 18 años, 11 meses
Puntos: 0
haz un var_dump($var) y verás si el resultado que estás obteniendo coincide con lo que pasa en el if. Seguramante que sí.

Seguramente le estás errando al número del field, ten en cuenta que los array comienzan de 0.

Un consejo, para que tu código sea más lejible, trata de no utilizar nunca los índices numéricos del resultado, sino más bien, hacer un fetch_assoc y utilizar el nombre del campo.

Saludos
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #3 (permalink)  
Antiguo 19/09/2005, 12:53
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Pero... ¿qué es lo que quieres evaluar en ese if?
Lo mejor es utilizar alguna de la funciones proporcionadas por PHP.

¿Evaluar si está definida la variable $var[2]?
- if(isset($var[2])){

¿Evaluar si está la variable $var[2] tiene un valor nulo, cero, cadena vacía, etc?
- if(!empty($var[2])){

etc..etc...etc...

Además deberías hacer validaciones y comprobaciones de que la consulta se está ejecutando correctamente.

Saludos
  #4 (permalink)  
Antiguo 19/09/2005, 13:15
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Disculpas...

La validación de la consulta, la hago, sólo que no la mostré al foro. Se está ejecutando correctamente.

No estoy errando el número del campo, tengo claro que se empieza con 0.

Vale. Le hago var_dump($var[2]); /*tendré presente lo del nombre del campo en vez del índice*/
y me arroja, en una prueba,

tstring(1) "t"
__________________
Gracias de todas todas
-----
Linux!
  #5 (permalink)  
Antiguo 19/09/2005, 21:02
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Bueno... habría que ver cómo maneja postgreSQL los valores para campos booleanos (¿1 y 0?, ¿true y false?, ¿t y f?...)

Lo que se devuelve de una consulta, normalmente será por defecto una cadena y no un booleano. Lo mejor es que afines ese if y pongas algo como:
if($var[2] == "true" ) // o "t"... o "1"... o como sea...

Saludos
  #6 (permalink)  
Antiguo 20/09/2005, 08:24
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
mmm, ok... el tipo pasó cuando lo comparé con "t"

Pero, siendo el campo bool, no debería tomar sólamente el if(variable)???
if($var[2]) => si el valor del campo es verdadero, se cumple la condición, no???
__________________
Gracias de todas todas
-----
Linux!
  #7 (permalink)  
Antiguo 20/09/2005, 08:37
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
si php evalua true como 1 y postgresql lo hace como 't' no habrá forma de compararlos.
  #8 (permalink)  
Antiguo 20/09/2005, 15:02
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Ya te lo dije... lo normal es que lo que leas de la base de datos venga como una cadena, incluso los valores numéricos.

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 05:55.