【问题标题】:Paginate result of foreach loop with php用php对foreach循环的结果进行分页
【发布时间】:2019-07-12 02:52:14
【问题描述】:

更新***我正在尝试对这个 foreach 循环的结果进行分页。这几乎有效。我能够获得分页所需的所有信息,但所有结果都显示在每一页上。记录数正确,生成的页码正确。我所缺少的只是在每一页上显示正确数量的记录。我知道我需要将“LIMIT”部分添加到 sql 但在哪里?

UPDATE#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)");

【问题讨论】:

  • 您已经搜索过类似这样的其他问题,对吧?您已经拒绝了哪些解决方案?请编辑您的问题以提供更多详细信息。
  • 是的,我已经搜索了 DAYS...很多小时尝试不同的“解决方案”,如果不这样做,我什至不会打开这个网站。我所有的尝试都失败了,否则我不会在这里。我认为我的问题是直截了当的。我需要对该代码进行分页。就是这样。
  • 您将三个循环嵌套在另一个循环中。这完全不清楚。你为什么需要这个?对于您需要做的事情,您的代码看起来非常复杂
  • 对,我同意,我不知道怎么清理!

标签: php sql mysqli foreach pagination


【解决方案1】:

由于您专门询问foreach 循环,我猜这是您需要分页的部分。它似乎循环了一组多个 ID。

在纯 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 个元素的数组的原始数组。因此$pages 中的每个条目都可以被视为单个页面的一组 ID。

【讨论】:

  • 谢谢拉斯特。这看起来很有帮助,但我一直遇到的问题是 WHERE 或如何实现它。我是否将 foreach(preg_split 部分替换为 $ids_array 变量?我不知道整段代码的外观。
  • 好吧,我也不知道整段代码应该是什么样子。你的问题说你已经有分页数组的经验,你可以在相同的代码库中查找现有方法并进行调整。
  • 我发布的代码就是现在的样子。没有区别,所以我问如何将您的代码放入我的代码中。如果我可以实现我的其他分页代码(因为我已经尝试了 5 天,我会这样做。)我做错了,所以我要求正确的事情顺序。
  • 我已经编辑了一些关于如何调整foreach 的内容。请注意,这不考虑处理不同页面的逻辑,因为您的代码没有与当前页面相关的任何输入。
猜你喜欢
  • 2015-06-05
  • 1970-01-01
  • 2015-03-28
  • 2010-12-13
  • 2014-01-17
  • 1970-01-01
  • 2013-04-10
  • 2011-07-27
  • 2015-09-18
相关资源
最近更新 更多