使用php

时间:2019-02-18 16:58:12

标签: php sql mysqli foreach pagination

更新***我正在尝试对这个foreach循环的结果进行分页。此ALMOST有效。我无法获取需要分页的所有信息,但是所有结果都显示在每一页上。记录数正确,生成的页码正确。我所缺少的只是在每页上显示正确数量的记录。我了解我需要在SQL中添加“ LIMIT”部分,但在哪里?

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

1 个答案:

答案 0 :(得分:0)

由于您具体询问了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集。