PHP分页查询的有效方式


Efficient way of paging querys PHP

我有一个非常小的表,需要运行它来显示注册用户的一些数据(名称、用户名)。

$query = mysql_query("SELECT * FROM users ORDER BY Username ASC") or die(mysql_error());
                        while($user = mysql_fetch_assoc($query))
                        {
                            echo '<tr><td>' . $user['Username'] . '</td>';
                            echo '<td>' . $user['FullName'] . '</td>';
                            echo "<td><a href='"deleteUser.php?id=" . $user['ID'] . "'">Delete</a><br /><a href='"editUser.php?id=". $user['ID'] . "'">Edit</a></td></tr>";
                        }

不管怎样,假设我会有50多个用户,整个页面都会被用户淹没。

所以我想到了一个解决方案,对于从数据库中提取的每15行,它们都将有自己的"页面"(使用$_GET)。我的一个朋友告诉我,这是一种叫做分页或分页的东西,我真的不记得了。我确实在网上找到了一些解决方案,但没有一个对我有帮助,有些看起来很长,我只是在寻找另一个教程。

有没有一种有效的方法可以在不涉及太多内容的情况下做到这一点?

它被称为分页:您可以在MySQL中使用LIMIT语句。

$page = (int) $_GET['page'];
$limit = 15;
$offset = $page * $limit;
$query = mysql_query("SELECT * FROM users ORDER BY Username ASC LIMIT $offset,$limit");

此外,您还需要使用不带LIMIT:的相同查询来计算总页数

$query = mysql_query("SELECT count(1) AS total FROM users");
$total = mysql_fetch_assoc($query)['total'];

然后你可以计算出你有多少页面:

$pages = range(0, ceil($total/$limit));
foreach($pages as $p)
    echo '<a href="?page=' . $p . '">' . $p . '</a>';

显然,您应该根据自己的需要调整此代码。