2015-05-29 135 views
0

如果我想查询这些行并把它们纳入我的HTML考虑,你有一个MySQL表FLAGS与行虽然从PDO查询while循环中循环

ID Language Flag1    Flag2    Flag3    Flag4 
1 dutch  flanders_flag.png dutch_flag.png 
2 french  wallonia_flag.png french_flag.png morocco_flag.png  
3 english england_flag.png ireland_flag.png america_flag.png scotland_flag.png 

的随机量情况我使用while循环,因为我永远不知道这个表有多少行FLAGS有。

<?php 
    $flagquery = $db->prepare ("SELECT * FROM flags"); 
    $flagquery->execute(); 
    while ($flagrow = $flagquery->fetch(PDO::FETCH_ASSOC)) { 
?> 
    <div class="col-md-1 col-sm-2 col-xs-6"> 
    <p><?php echo $flagrow['language']; ?></p> 
    <p><?php echo $flagrow['flag1']; ?></p> 
    <p><?php echo $flagrow['flag2']; ?></p> 
    <p><?php echo $flagrow['flag3']; ?></p> 
    <p><?php echo $flagrow['flag4']; ?></p> 
    </div> 
<?php 
    } 
?> 

但你可以在标志见表,你并不总是有4个标志语言,所以我想你必须做一个while循环中此之前的while循环呼应只有那标志出现在FLAGS表中,而不是仅回显所有标志,即使它们是空的。

我的想法是对的吗?或者什么是处理我的情况的最佳方式?

+0

使用isset($ flagrow [“标志1”]) – Omar

+0

我想到这点对,谢谢你的同样的想法。但是没有任何更简单的方法,然后查看数组密钥是否已设置? – Peter

+0

isset()是一个简短的方法..我不知道是否有更短的:) – Omar

回答

1

不,你不需要第二个循环,你可以使用!empty()。如果变量是一个空字符串,false,array(),NULL,“0”,0和一个未设置的变量,它将返回false。这对你的情况很有用,并且允许FLAGS具有NULL值。

<?php 
$flagquery = $db->prepare ("SELECT * FROM flags"); 
$flagquery->execute(); 
while ($flagrow = $flagquery->fetch(PDO::FETCH_ASSOC)) { 
?> 
<div class="col-md-1 col-sm-2 col-xs-6"> 
<p><?php echo $flagrow['language']; ?></p> 
<?php if(!empty($flagrow['flag1'])) echo '<p>'.$flagrow['flag1'].'</p>'; ?> 
<?php if(!empty($flagrow['flag2'])) echo '<p>'.$flagrow['flag2'].'</p>'; ?> 
<?php if(!empty($flagrow['flag3'])) echo '<p>'.$flagrow['flag3'].'</p>'; ?> 
<?php if(!empty($flagrow['flag4'])) echo '<p>'.$flagrow['flag4'].'</p>'; ?> 
</div> 
    <?php 
} 
?> 
0
<?php 
$flagquery = $db->prepare ("SELECT * FROM flags"); 
$flagquery->execute(); 
while ($flagrow = $flagquery->fetch(PDO::FETCH_ASSOC)) { 
?> 
<div class="col-md-1 col-sm-2 col-xs-6"> 
<p><?php echo $flagrow['language']; ?></p> 
<p><?php if($flagrow['flag1']!='') echo $flagrow['flag1']; ?></p> 
<p><?php if($flagrow['flag2']!='') echo $flagrow['flag2']; ?></p> 
<p><?php if($flagrow['flag3']!='') echo $flagrow['flag3']; ?></p> 
<p><?php if($flagrow['flag4']!='') echo $flagrow['flag4']; ?></p> 
</div> 
    <?php 
} 
?> 

检查,如果变量为空,则它有,如果别人不

+0

说明你在这里做了什么 –

+0

我只是检查变量是否为空然后它在没有其他的时候进来 – priya786

+1

将它发布在你的答案中而不是我这样更进一步的用户了解你做了什么以及OP为什么要这样做 –