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 ---&#60;?PHP&#036;ssql_= @mysql_query(&#34;select * from zen_book_authors as a, zen_book_authors_info as adWHERE a.book_authors_id ='&#34;.&#036;_GET[book_authors_id].&#34;' and a.book_authors_id = ad.book_authors_id&#34;) or die(mysql_error());&#036;obj=mysql_fetch_object(&#036;ssql_);?&#62;  &#60;td valign=&#34;top&#34; bgcolor=&#34;#FFFFFF&#34;&#62;&#60;div align=&#34;left&#34;&#62;&#60;br&#62; &#60;? if(&#036;obj[book_authors_image]) echo '&#60;img src=&#34;/images/'.&#036;obj-&#62;book_authors_image.'&#34; &#62;';?&#62; &#60;/div&#62;&#60;/td&#62;&#60;? } else { ?&#62;&#60;td bgcolor=&#34;#FFFFFF&#34;&#62;&#60;/td&#62;&#60;? } ?&#62;&#60;td bgcolor=&#34;#FFFFFF&#34;&#62;&#60;br&#62;&#60;? if( &#036;obj[book_authors_info]) {echo &#036;obj-&#62;book_authors_info;} else {echo '&#60;div align=&#34;center&#34;&#62;&#60;p class=&#34;texto&#34;&#62;Por el momento, no hay información disponible.&#60;/p&#62;&#60;/div&#62;';}?&#62; 

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

[0] Índice de Mensajes

Ir a la versión completa