如何限制PHP While循环的输出?

时间:2011-08-04 20:14:55

标签: php mysql arrays loops while-loop

我有一个while循环运行,它返回来自MYSQL表的值。它返回查询中的大约90个条目。我希望能够打破这90个值,并以5的分组显示。这可能听起来令人困惑,所以让我分享一些代码示例以帮助澄清:

$con = mysql_connect("host", "username", "password") or die ("Unable to connect to server");
mysql_select_db("database") or die ("Unable to select database");
$sql = mysql_query("SELECT * FROM `table` WHERE column IS NOT NULL AND column <> ''");

在这里,我从表格中提取出我需要的价值......

while($row=mysql_fetch_array($sql))
{
$id=$row['id'];
$column=$row['column'];

echo $id . '<br>';
echo $column . '<br>';

}   

此时,我已经运行了循环并显示了所有90个条目。如何将值拉出并以较小的块显示?如果我在while循环之外使用循环值,它只是给出了集合中的最后一个值。有没有一种简单的方法可以使用列中的唯一$id值来获取循环中的特定分组?

3 个答案:

答案 0 :(得分:2)

这将在每5条记录后添加更多br和一小时:

$cnt = 0;
while($row=mysql_fetch_array($sql))
{

  $id=$row['id'];
  $column=$row['column'];

  echo $id . '<br>';
  echo $column . '<br>';

  if($cnt % 5 == 0) echo "<br><br><hr><br><br>";

  $cnt++;
}   

答案 1 :(得分:1)

以下是您可以采取的一种(非常复杂的)方法:

$group_size = 5;
$tracking_variable = 0;
while ($row = function_to_fetch_row()) {
    if ($tracking_variable == 0) {
        // logic for the start of a grouping
    }
    // logic to display the row
    $tracking_variable = ($tracking_variable + 1) % $group_size;
    if ($tracking_variable == 0) {
        // logic for the end of a grouping
    }
}
if ($tracking_variable > 0) {
    // logic for the end of the final grouping
}

答案 2 :(得分:0)

您希望将此数据保存在变量中,并在循环外引用它。

试试这个:

$data = array();
while($row=mysql_fetch_array($sql))
{
    $data[$row['id']] = $row['column'];
}

现在你可以只显示特定的行:

print $data[$someRow];