我有一个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
值来获取循环中的特定分组?
答案 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];