永远不会达到其他条件

时间:2014-06-17 18:07:37

标签: php mysql

当我在里面创建三个条件时,但只有两个可见。

<?php 
 $ga= mysql_query("Select * from galeri");
 while ($v=mysql_fetch_object($ga)) { 

 if ($v->video==NULL){ ?> 
 <a href="images/galeri/<?php echo $v->foto?>" data-caption="<?php echo $v->judul?> - <?php echo tgl($v->tgl) ?>" data-fit="cover"  data-thumb = "images/galeri/<?php echo $v->foto?>"></a>
 <?php  } 

 else if ($v->foto==NULL AND $v->linkfoto==NULL) { ?>
 <a href="<?php echo $v->video ?>"  data-fit="cover" data-caption="<?php echo $v->judul?> - <?php echo tgl($v->tgl) ?>"  ><?php echo $v->judul?> - <?php echo tgl($v->tgl) ?></a>

 <?php  } else  { ?>
 <img src="<?php echo $v->linkfoto?>" data-caption="<?php echo $v->judul?> - <?php echo tgl($v->tgl) ?>" data-fit="cover"   data-thumb = "<?php echo $v->linkfoto?>">
<?php } }?>

galeri Table

您可以在上图中看到“linkfoto”字段包含1

为什么条件三else没有出现?

3 个答案:

答案 0 :(得分:3)

忽略其他基本格式结构或代码的其他潜在问题,即

else if ($v->foto=NULL && $v->linkfoto==NULL) { ?>

需要第二个=标志。您使用单个等号将NULL分配给$v->foto

更正应该是:

else if ($v->foto == NULL && $v->linkfoto == NULL) { ?>

答案 1 :(得分:2)

行[{1}}也是空的,因此第一次检查video可能是真的,永远不会达到$v->video==NULL

要解决此问题,我建议使用else检查是否在您要使用的变量上设置了值 - 不检查是否未设置所有其他变量。

if

这样做的好处是,如果您希望将来编辑代码,您知道可以在if ($v->foto != NULL) { printf('<a href="images/galeri/%s" data-caption="%s - %s" data-fit="cover" data-thumb = "images/galeri/%s"></a>', $v->foto, $v->judul, tgl($v->tgl), $v->foto); } elseif ($v->video != NULL) { //etc } else { } 中使用哪些变量 - 因为您检查了它们已被设置!

答案 2 :(得分:0)

你正在做else分配条件,我猜它应该是一个比较,做:

$v->foto == NULL

而不是:

$v->foto = NULL