Paginate результат цикла foreach с php - PullRequest
0 голосов
/ 18 февраля 2019

ОБНОВЛЕНИЕ *** Я пытаюсь разбить на страницы результат этого цикла 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)");

1 Ответ

0 голосов
/ 18 февраля 2019

Поскольку вы спрашиваете конкретно о цикле 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 элементов.Таким образом, каждая запись в $pages может рассматриваться как набор идентификаторов для одной страницы.

...