高效的分页查询PHP方式

时间:2013-12-08 18:36:04

标签: php mysql pagination

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

$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)。 我的一个朋友告诉我这是一种叫做分页或分页的东西,我真的不记得了。我确实在网上找到了一些解决方案,但没有人帮助我,有些看起来很长,我只是寻找另一个教程。

有没有一种有效的方法可以做到这一点而不会涉及到它周围的东西?

1 个答案:

答案 0 :(得分:1)

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

$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>';

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