猿问

使用MySQL LIMIT,OFFSET的分页

我有一些限制数据以每页仅显示4个项目的代码。我使用的列大约有20到30个项目,因此我需要将这些项目分散在各个页面上。


在第一页上,我有:


    $result = mysqli_query($con,"SELECT * FROM menuitem LIMIT 4");

{

  echo "<tr>";

  echo "<td align='center'><img src=\"" . $row['picturepath'] . "\" /></td>";

  echo "<td align='center'>" . $row['name'] . "</td> <td align='center'> <input type='button' value='More Info'; onclick=\"window.location='more_info.php?';\"> </td>";

  echo "<td align='center'>" . $row['price'] . "</td> <td align='center'> <input type='button' value='Add to Order' onclick=''> </td>";

  echo "</tr>";

 }

echo "</table>";


mysqli_close($con);


    ?> 


    <table width="1024" align="center" >

        <tr height="50"></tr>

            <tr>

                <td width="80%" align="right">

                    <a href="itempage2.php">NEXT</a>

                </td>

                <td width="20%" align="right">

                    <a href="">MAIN MENU</a>

                </td>

            </tr>

    </table>

您会在页面底部注意到我的定位标记,其中列出了第二个页面“ itempage2.php”。在项目页面2中,我具有相同的代码,除了我的select语句列出了偏移量4。


$result = mysqli_query($con,"SELECT * FROM menuitem LIMIT 4 offset 4");

当我的数据库中有预定数量的项目时,这种方式可以运行。但这不是很好。仅当有更多项目时才需要创建一个新页面,而不是像现在这样将其硬编码到其中。


如何创建多个页面而不必对每个新页面和偏移量进行硬编码?


HUWWW
浏览 1293回答 3
3回答

慕码人8056858

如果您想保持简单,请尝试一下。$page_number = mysqli_escape_string($con, $_GET['page']);$count_per_page = 20;$next_offset = $page_number * $count_per_page;$cat =mysqli_query($con, "SELECT * FROM categories LIMIT $count_per_page OFFSET $next_offset");while ($row = mysqli_fetch_array($cat))&nbsp; &nbsp; &nbsp; &nbsp; $count = $row[0];其余的取决于您。如果您从两个表中得出结果,建议您尝试其他方法。

繁星点点滴滴

使用 .. LIMIT :pageSize OFFSET :pageStart其中:pageStart绑定到the_page_index(即第一页为0)* number_of_items_per_pages(例如4),:pageSize并绑定到number_of_items_per_pages。若要检测“具有更多页面”,请使用SQL_CALC_FOUND_ROWS或使用.. LIMIT :pageSize OFFSET :pageStart + 1并检测缺少的最后一个(pageSize + 1)记录。不用说,对于索引> 0的页面,存在前一页。如果页面索引值嵌入在URL中(例如,在“上一页”和“下一页”链接中),则可以通过适当的$_GET项获得它。
随时随地看视频慕课网APP
我要回答