我正在使用这个来自w3schools的PHP Ajax示例。这工作正常,但当记录列表很大时,这不是一个有效的解决方案。所以我想添加分页来处理大记录。如何添加分页(Ajax 分页,以便我可以避免页面重新加载)?
这是我的代码:
<?php
$q = intval($_GET['q']);
$con = mysqli_connect('localhost','peter','abc123','my_db');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"ajax_demo");
$sql="SELECT * FROM user WHERE type_no = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
我通常做的是使用 mysql 中的LIMIT
功能。当我查看您的示例时,我会假设 sql 语句只会返回一个结果。
假设您有一个名为 user
的表,其中包含许多用户,如果您有这样的查询:
SELECT * FROM user
您将在一个查询中恢复所有用户。这对于大多数用途是不切实际的。在我看来,最优雅的解决方案是LIMIT
功能。
例如,如果我想查看某个范围内的结果:
SELECT * FROM user LIMIT 0,50 #return first 50 results - records 0 to 49
SELECT * FROM user LIMIT 50,50 #return the next 50 results - records 50 to 99
LIMIT
语法如下所示LIMIT <offset>,<count>
其中偏移量是起始结果(从 0 开始),计数是要返回的结果数。
因此,假设您的页面大小为 50,并且位于您想要的第 5 页上:
LIMIT 100,25
在数据库级别处理此问题是最简单、最快捷的方法。