Programación Web y Scripting > PHP
No Funciona El Condicional
(1/1)
Sue:
Hola a todos!
¿Alguien podrá darme una mano? ¿Cómo hago para que, si el autor no tiene foto, no salga la ruta, o si no tiene info salga un mensaje "no hay info"? Los campos book_authors_image y book_authors_info están vacíos, y no logro hacerlo funcionar. Probé de todo, pero no logro que diferencie el vacío del que tiene texto. Si pongo esto
$obj[book_authors_info]!= null
no levanta la info y da el mensaje,
Si pongo esto:
$obj[book_authors_info]!= "null"
me parece que lo considera como texto, no?
Si pongo
is_null($obj[book_authors_image]) == false
también levanta el vacío (no escribe nada) y el mensaje no sale.
Va el código:
<?PHP
$ssql_= @mysql_query("select * from zen_book_authors as a, zen_book_authors_info as ad
WHERE a.book_authors_id ='".$_GET[book_authors_id]."' and a.book_authors_id = ad.book_authors_id") or die(mysql_error());
$obj=mysql_fetch_object($ssql_);
?>
<? if(is_null($obj[book_authors_image]) == false ){?>
<td valign="top" bgcolor="#FFFFFF"><div align="left"><br><img src="/images/<?php echo $obj->book_authors_image; ?>" ></div></td>
<? } else { ?>
<td bgcolor="#FFFFFF"></td>
<? } ?>
<td bgcolor="#FFFFFF">
<br>
<? if( $obj[book_authors_info]!= "null" ) {
echo $obj->book_authors_info;
} else {
echo '<div align="center">
<p class="texto">Por el momento, no hay información disponible.</p>
</div>';
}
?>
Gracias de antemano!!
Informix:
mmm a ver cambia
if(is_null($obj[book_authors_image]) == false )
por
if(is_null($obj[book_authors_image]) )
ya que is_null debe regresar true en caso de que sea nulo cierto ?
if( $obj[book_authors_info]!= "null" ) por
if( $obj[book_authors_info] != NULL )
a ver que pasa
saludos
Sue:
Gracias por la respuesta!!!
Mirá, si pongo:
if(is_null($obj[book_authors_image]) )
sale la imagen que está, pero cuando no hay sigue saliendo el enlace roto de la ruta, http://www.serviciobuscalibros.com.ar/images/
si en info pongo:
if( $obj[book_authors_info] != NULL )
tanto en el que tiene texto como en el que no, sale el mensaje de "Info no disponible".
Es como que no los diferencia.
El campo book_authors_image es un varchar(64) predetermnado NULL y el campo book_authors_info es text predeterminado NULL.
Y no tengo idea de programación PHP :)
¿Qué podrá ser??
Gracias de nuevo!!!
Altareum:
Prova haciendo:
--- Código: Text ---<?PHP$ssql_= @mysql_query("select * from zen_book_authors as a, zen_book_authors_info as adWHERE a.book_authors_id ='".$_GET[book_authors_id]."' and a.book_authors_id = ad.book_authors_id") or die(mysql_error());$obj=mysql_fetch_object($ssql_);?> <td valign="top" bgcolor="#FFFFFF"><div align="left"><br> <? if($obj[book_authors_image]) echo '<img src="/images/'.$obj->book_authors_image.'" >';?> </div></td><? } else { ?><td bgcolor="#FFFFFF"></td><? } ?><td bgcolor="#FFFFFF"><br><? if( $obj[book_authors_info]) {echo $obj->book_authors_info;} else {echo '<div align="center"><p class="texto">Por el momento, no hay información disponible.</p></div>';}?>
El problema está en que MYSQL te devuelve un valor NULL, pero php lo interpreta como una cadena vacía.... Igualmente para el chequeo de condiciones, tanto el valor 0 com una cadena vacía, son nulos....
Altareum.
Sue:
Gracias, Altareum!
Lo probé pero no levanta nada... queda en blanco la página y el código fuente muestra esto:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1"></HEAD>
<BODY></BODY></HTML>
¿Qué podrá ser?
Navegación
Ir a la versión completa