我有一个包含4列(id,title,image,text)的数据库表。共有120行,我想循环遍历所有行。我知道我可以这样做(使用MySQLi):
$resultSet = $db->query("SELECT * FROM Table");
if ($resultSet->num_rows != 0)
{
while ($rows = $resultSet->fetch_assoc())
{
//Do something
}
}
但我要做的是:在三列中显示信息,例如:
1 3 5
[Title] [title] [title]
[image] [image] [image]
[text] [text] [text]
2 4 6
[Title] [title] [title]
[image] [image] [image]
[text] [text] [text]
ID仅供参考,不会显示。我想要3列,每列包含40行。我试图解决的问题是,当第一列完成显示数据库表中的前40行时,如何返回到顶部以便第二列和第三列彼此相邻创建?我是否需要3个循环,每个循环都有自己的div?如果是这样,我将如何完成3个循环,每个循环遍历40行?
答案 0 :(得分:1)
无需循环回来。在这个变量中保存每40行
if ($resultSet->num_rows != 0)
{
$count = 40;
$ctr = 1;
$index = 0;
$cols = array();
while ($rows = $resultSet->fetch_assoc())
{
if($ctr <= $count){
$cols[$index] = $rows;
}
if($ctr >= $count){
$count += 40;
$index++;
}
$ctr++;
}
print_r($cols);
}
答案 1 :(得分:0)
if ($resultSet->num_rows != 0)
{
?>
<table>
<tr>
<?php
$i = 0;
while ($rows = $resultSet->fetch_assoc())
{
$i++;
?>
<td>
<table>
<tr>
<td>image</td>
</tr>
<tr>
<td>title</td>
</tr>
<tr>
<td>price</td>
</tr>
</table>
</td>
<?php
if($i == 3)
{
$i = 0;
echo "</tr>";
echo "<tr>";
}
}
?>
</tr>
</table>
<?php
}
?>
答案 2 :(得分:0)
如果您没有太多(数千)行要显示,您可以执行以下操作:
SELECT * FROM table ORDER BY ORDER BY IF(id % 2, id - 100000, id);
这假设您的身份证不超过100000,如果确实如此,则使该常数更大。
我们的想法是,我们提出了一个函数,在相互比较时保留奇数的顺序,对偶数相同,但总是使奇数胜过(大于),因此将其放在后面命令。如果您需要不同的订单,可以使用IF()
来使其正确。