Php 如何从数据库表的中间开始循环?
我有一个包含4列(id、标题、图像、文本)的数据库表。总共有120行,我想遍历所有行。我知道我可以这样做(使用MySQLi): 但我想做的是:在三列中显示信息,例如:Php 如何从数据库表的中间开始循环?,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个包含4列(id、标题、图像、文本)的数据库表。总共有120行,我想遍历所有行。我知道我可以这样做(使用MySQLi): 但我想做的是:在三列中显示信息,例如: 1 3 5 [Title] [title] [title] [image] [image] [image] [text] [text] [text] 2 4 6 [Title] [title] [title]
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行?无需循环。每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);
}
if($resultSet->num_rows!=0)
{
$count=40;
$ctr=1;
$index=0;
$cols=array();
而($rows=$resultSet->fetch_assoc())
{
如果($ctr=$count){
$count+=40;
$index++;
}
$ctr++;
}
印刷费($cols);
}
如果($resultSet->num\u rows!=0)
{
?>
形象
标题
价格
如果没有太多(数千)行要显示,可以执行以下操作:
SELECT * FROM table ORDER BY ORDER BY IF(id % 2, id - 100000, id);
这假设您的id不超过100000,如果超过100000,则将该常量变大
我们的想法是,我们提出了一个函数,它在相互比较时保留奇数的顺序,对于偶数也是如此,但总是使偶数赢(大于)奇数,从而将其放在后面的顺序中。如果需要不同的顺序,可以使用
If()
使其恰到好处。当行数大于40时,您可以将条件放入循环中,您需要移动到下一列!如果您使用的是php>=5.4.0,则可以使用mysqli::data\u seek()
在结果集中前后移动。您可以读取一行,跳转+40,读取下一行,跳转+40,然后读取第三行,输出三列数据,然后跳转-79并再次执行。您也可以使用CSS包装表,但我不知道如何包装。
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
}
?>
SELECT * FROM table ORDER BY ORDER BY IF(id % 2, id - 100000, id);