在php中格式化while循环

时间:2015-01-29 17:29:22

标签: php

我试图在php中格式化while循环的输出。当显示while循环的结果时,它只是一个长列表。我想把它拆分成列。这是我的代码:

$sql = "SELECT * FROM refdb ORDER BY referral";
$result = mysqli_query($con,$sql)or die(mysqli_error());
echo "<form action='test2.php' method='get'>";
while($row = mysqli_fetch_array($result)) {

echo '<input type="checkbox" name="tag[]" value="' . $row[referral] . '">' . $row[referral] . '</label></br>';  


}

echo '<input type="submit" name="submit" Value="Submit"/>';

它将结果作为表单中的复选框选项返回。

(这是我的第一篇文章,对不起,如果我把它弄错了。非常感谢任何帮助)

1 个答案:

答案 0 :(得分:0)

这是在模板或输出上下文中。在这种情况下,最好使用备用语法控制结构(假设你不在函数/方法中 - 你不应该这样):

<?php while(EXPRESSION): ?>
<div class="somehtml">
   <?php echo $something ?>
   <a href="<?php echo $theURl ?>"><?php echo $theLabel ?></a>
</div>
<?php endwhile ?>

现在就你的具体问题而言......假设结果集的大小合理,我会首先将它们全部提取到数组中:

$results = array();
while($row = mysqli_fetch_array($result)) {
  $results[] = $row;
}

之后,您可以使用array_chunk将其转换为列数组:

$columns = array_chunk($results, 5);

然后你可以输出它们:

<?php foreach($columns as $rows): ?>
    <div class="col">
    <?php foreach($rows as $row): ?>
        <input type="checkbox" name="tag[]" value="<?php echo $row[referral]?>"> 
        <label><?php echo $row[referral] ?></label></br>
    <?php endforeach; ?>
    </div>
<?php endforeach; ?>