使用 while 循环,我可以按照我想要的顺序返回我的表,但是在实现分页之后,我创建的变量(计数器)在每个页面上重置自身,令人沮丧。示例代码:
$sql = ('SELECT id,name,logo FROM mytable ORDER BY name DESC LIMIT 25');
$query = mysqli_query($db_conx,$sql);
$counter = 0;
while ($row = $query->fetch_assoc()) {
$counter++;
echo "$counter, $row['id'], $row['name']";
echo "<br />";
}
我已经尝试了很多方法,但无法使其发挥作用。显然我的逻辑是有问题的。循环返回正确的结果,但 $counter 变量在每个页面上中断,无限期地重置自身。
我想做的是让分页循环创建的每个页面的 $counter 增加 25(表示每个页面的结果)。示例代码:
for ($i=1; $i<=$total_pages; $i++) {
echo "<a href='page.php?page=".$i."'> [".$i."]</a> ";
$GLOBALS["counter"]+=25;
};
显然这不起作用,所以我对下一步应该尝试什么感到困惑。如果有人有任何想法,我很乐意听到他们,我听说过有关 SO 社区的伟大事情。
最佳答案
您似乎在任何时候都只显示前 25 个结果。
如果是第一页,则需要将 $counter 初始化为零,如果是第二页,则需要初始化为 26,依此类推:
$counter = 0;
if(isset($_GET['counter'])){
$counter = intval($_GET['counter']);
}
您需要修改查询以获取每个页面的一组不同结果:
$sql = 'SELECT id,name,logo FROM mytable ORDER BY name DESC LIMIT ' . mysqli_real_escape_string($db_conx, $counter . ',25');
$query = mysqli_query($db_conx,$sql);
然后我假设您显示到其他分页页面的链接,您需要向其传递 $counter 的值:
<a href="results.php?counter=<?php echo $counter;?>">Next</a>
关于php - 如何使用 order by 为表建立索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38844337/