Php 如何从数据库表的中间开始循环?

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]

我有一个包含4列(id、标题、图像、文本)的数据库表。总共有120行,我想遍历所有行。我知道我可以这样做(使用MySQLi):

但我想做的是:在三列中显示信息,例如:

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