【问题标题】:Formatting a while loop in php在php中格式化while循环
【发布时间】:2015-01-29 17:29:21
【问题描述】:

我正在尝试在 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"/>';

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

(这是我的第一篇文章,如果我弄错了,很抱歉。任何帮助将不胜感激)

【问题讨论】:

  • 最简单的答案是从回显字符串中取出。
  • 您的问题是什么?听起来您正在寻找标记样式,这将在 HTML 和 CSS 上完成,而不是在 PHP 中。
  • 现在它们显示为包含大约 50 个条目的单列。我想显示为 5 列,每列 10 个条目。

标签: php


【解决方案1】:

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

<?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; ?>

【讨论】:

  • 谢谢,这看起来像我需要的,我会试试看
  • 我不是在搞砸什么,但这对我不起作用。它仍然只是显示为一长列。而不是多列。
  • 那么您需要设置包含元素的divs 的样式,否则它将显示为单个长列。
猜你喜欢
  • 2016-11-27
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2013-03-28
  • 2014-10-19
  • 2013-06-12
相关资源
最近更新 更多