我试图在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"/>';
它将结果作为表单中的复选框选项返回。
(这是我的第一篇文章,对不起,如果我把它弄错了。非常感谢任何帮助)
答案 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; ?>