提问人:Lori 提问时间:2/19/2019 最后编辑:Lori 更新时间:8/19/2022 访问量:617
使用 php 对 foreach 循环的结果进行分页
Paginate result of foreach loop with php
问:
更新***我正在尝试对此 foreach 循环的结果进行分页。这几乎有效。我能够获得分页所需的所有信息,但所有结果都显示在每一页上。记录计数正确,生成的页码正确。我所缺少的只是向每页显示正确数量的记录。我知道我需要将“LIMIT”部分添加到sql中,但是在哪里?
更新#2 - LIMIT正在工作,但是,我发现显示的记录仅被视为1条记录,因为它们位于1个字段的列表中。因此,我需要以某种方式将结果分解成单独的部分,以便准确计数。我希望这是有道理的。
//$page is generated on another page and is working correctly
$sql = mysqli_query($con, "SELECT * FROM profile_tbl WHERE X_reg_id = '$var_reg_id'");
while($field = mysqli_fetch_assoc($sql)){
$list = $field['profile_choose_them'];
$list_count = preg_split("/((\r?\n)|(\r\n?))/", $list);
$records_per_page = 3;
$item_count= count($list_count);
$item_count_adj_total_records = ($row_count-1);
$total_pages = ceil($item_count_adj_total_records/$records_per_page);
$offset = (($page-1)*$records_per_page);
}
foreach(preg_split("/((\r?\n)|(\r\n?))/", $list) as $id){
$single = mysqli_query($con, "SELECT * FROM profile_tbl WHERE X_reg_id = '$id'");
while($display = mysqli_fetch_assoc($single)){
echo '<div><img src="'.$display["profile_pic_main"] .'"></div>';
}
}
for($page=1;$page<=$total_pages;$page++){
echo '<a href="../../'.$var_return_ref.'?page='.$page.'">'.$page.'</a> ';
}
我试过了,但它不显示我的项目,只显示页码
$single = mysqli_query($con, "SELECT * FROM profile_tbl WHERE X_reg_id = '$id' LIMIT ($offset, $item_count_adj_total_records)");
答:
0赞
Rarst
2/19/2019
#1
由于您专门询问循环,我猜这是您需要分页的部分。它似乎循环了多个 ID 集。foreach
在纯PHP级别上,将此类数组拆分为页面的最暴力方法是对其进行分块:
$ids_array = preg_split("/((\r?\n)|(\r\n?))/", $my_fields['profile_choose_them']);
$pages = array_chunk( $ids_array, 10 );
foreach( $pages[0] as $assign_id ) { // this would loop through first 10 items
}
$pages
将包含拆分为 10 个元素的数组的原始数组。因此,每个条目都可以被视为单个页面的一组 ID。$pages
评论
0赞
Lori
2/19/2019
谢谢拉斯特。这看起来很有帮助,但我一直遇到的问题是在哪里或如何实现它。我是否用 $ids_array 变量替换 foreach(preg_split 部分?我不知道整段代码应该是什么样子。
0赞
Rarst
2/19/2019
好吧,我也不知道整段代码应该是什么样子。您的问题表明您已经有分页数组的经验,您可以在相同的代码库中查找现有方法并对此进行调整。
0赞
Lori
2/19/2019
我发布的代码就是它现在的样子。没有区别,所以我问如何把你的代码放到我的代码中。如果我能实现我的其他分页代码(正如我 5 天来一直在尝试的那样,我会这样做的。我做错了,所以我要求事情的正确顺序。
0赞
Rarst
2/19/2019
我已经编辑了一些如何调整。请注意,这不考虑处理不同页面的逻辑,因为您的代码没有任何与当前页面相关的输入。foreach
评论