Intereting Posts
Как обновить строку с несколькими изображениями, которые имеют только одно изображение, вставленное первоначально в php Извлечение контекста из заданного значения в середине файла HTML Мне нужно написать веб-искатель для конкретного пользовательского агента Запуск входа в php-сессия Можно ли использовать экземпляр Object как Array Key? Загрузка php-изображений с помощью jquery post неожиданный «класс» (T_CLASS) только на удаленном (не на локальном) php как хранить и читать данные json через mysql? У меня ошибка в laravel по функции /vendor/guzzlehttp/psr7/src/functions.php в строке 77 phpbb 3.1 передача переменной между 2 страницами Как распечатать все сеансы, установленные в настоящее время? Как фильтровать кешированный запрос в Laravel mysql соответствует ~ примеру php файл отправляет переменную в внешний файл .js Zend 2 :: легко получить путь к общей папке или basePath () в действии контроллера

Разбивка страницы не соответствует номерам отображаемых страниц. Codeigniter

Моя функция контроллера

function test($start_from = 0) { $this->load->library('pagination'); $data = array(); $per_page = 3; $total = $this->activity_model->count_by(); $config['base_url'] = base_url() . 'test'; $config['total_rows'] = $total; $config['per_page'] = $per_page; $config['uri_segment'] = 2; $config['num_links'] = 2; $config['use_page_numbers'] = TRUE; $data['follow'] = $this->activity_model->get($per_page, $start_from); $this->pagination->initialize($config); $data['pagination'] = $this->pagination->create_links(); $this->load->view('front_end/test' ,$data); } 

мой маршрут:

  $route['test'] = "user_activity/test"; $route['test/(:any)'] = "user_activity/test/$1"; 

модель:

  function get($limit,$start_from) { $sql = "SELECT * FROM user_follow LIMIT $start_from, $limit"; $query = $this->db->query($sql); return $query->result_array(); } 

Проблема в том, что у меня есть разбиение на страницы 1,2,3,4,5 …. и на каждой странице я показываю 3 элемента. Я хочу сделать это по URL-адресу, чтобы показать мои номера страниц 1,2,3,4,5

Когда я нажимаю вторую страницу, показываю URL-адрес 3 Когда я нажимаю ссылку на страницу третьей страницы, и т. Д. +3

возможно, я трачу часы на поиск советов в Интернете, но ничего, как я понимаю [code] $ config ['use_page_numbers'] = TRUE; [/ code] делает то, что мне нужно, но в моем случае он все еще не работает.

Может быть, вы можете посоветовать любую библиотеку?

    Внесите следующие изменения в класс Pagination (/system/libraries/Pagination.php), чтобы он использовал номера страниц вместо смещений.

    СТАРЫЙ (строки 146-153):

     if ($CI->uri->segment($this->uri_segment) != 0) { $this->cur_page = $CI->uri->segment($this->uri_segment); // Prep the current page - no funny business! $this->cur_page = (int) $this->cur_page; } 

    NEW:

    Добавить опцию 'else' в if-statement, чтобы убедиться, что значение по умолчанию: page = 1.

     if ($CI->uri->segment($this->uri_segment) != 0) { $this->cur_page = $CI->uri->segment($this->uri_segment); // Prep the current page - no funny business! $this->cur_page = (int) $this->cur_page; } else { $this->cur_page = 1; } 

    СТАРЫЙ (строка 175):

     $this->cur_page = floor(($this->cur_page/$this->per_page) + 1); 

    NEW:

    Просто прокомментируйте эту строку, чтобы текущая страница подчинялась контроллеру / URI.

     //$this->cur_page = floor(($this->cur_page/$this->per_page) + 1); 

    СТАРЫЙ (строка 206):

     $i = $uri_page_number - $this->per_page; 

    NEW:

    На предыдущей странице всегда должна быть вычитана текущая страница на 1.

     $i = $uri_page_number - 1; 

    OLD (строка 230):

     if ($this->cur_page == $loop) 

    NEW:

    URI, отсутствующие в разбивке на страницы, следует рассматривать на стр. 1.

     if ($this->cur_page == $loop || ($this->cur_page == 1 && $this->cur_page == $loop)) 

    СТАРЫЙ (строка 238-247):

     if ($n == '' && $this->first_url != '') { $output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->first_url.'">'.$loop.'</a>'.$this->num_tag_close; } else { $n = ($n == '') ? '' : $this->prefix.$n.$this->suffix; $output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$n.'">'.$loop.'</a>'.$this->num_tag_close; } 

    NEW:

    URL страницы должны использовать номера страниц, а не смещения.

     if ($n == '' && $this->first_url != '') { $output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$loop.'">'.$loop.'</a>'.$this->num_tag_close; } else { $n = ($n == '') ? '' : $this->prefix.$n.$this->suffix; $output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$loop.'">'.$loop.'</a>'.$this->num_tag_close; } 

    OLD (строка 256):

     $output .= $this->next_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.($this->cur_page * $this->per_page).$this->suffix.'">'.$this->next_link.'</a>'.$this->next_tag_close; 

    NEW:

    Следующая страница всегда должна быть суммой текущей страницы и 1.

     $output .= $this->next_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.($this->cur_page + 1).$this->suffix.'">'.$this->next_link.'</a>'.$this->next_tag_close; 

    СТАРЫЙ (строка 262):

     $i = (($num_pages * $this->per_page) - $this->per_page); 

    NEW:

    На последней странице должно быть общее количество страниц.

     $i = $num_pages; 

    Замените все старые строки новыми строками. Перед изменением убедитесь, что вы делаете резервную копию файла.

    Надеюсь это поможет 🙂

    РЕДАКТИРОВАТЬ:

    Вам необходимо обновить тестовую функцию контроллера следующим образом:

     function test($start_from = 0) { $this->load->library('pagination'); $data = array(); $per_page = 3; $total = $this->activity_model->count_by(); $config['base_url'] = base_url() . 'test'; $config['total_rows'] = $total; $config['per_page'] = $per_page; $config['uri_segment'] = 2; $config['num_links'] = 2; $config['use_page_numbers'] = TRUE; $start = $per_page * ($start_from-1); $data['follow'] = $this->activity_model->get($per_page, $start); $this->pagination->initialize($config); $data['pagination'] = $this->pagination->create_links(); $this->load->view('front_end/test' ,$data); } 

    Здесь я добавил новую переменную $ start, которая равна $per_page * ($start_from-1) . Теперь передайте этот $ start в качестве аргумента для модели.

    Это означает, что количество элементов на странице умножается на число (номер текущей страницы -1). Это означает, что если ваши позиции на странице равны 10 а вы на второй странице – $start = 10 *(2-1) что дает 10 , Таким образом, ваш результат будет начинаться с 10,20, и поэтому один

    Надеюсь это поможет 🙂

    Мне удалось это сделать без изменения класса. Лучший способ – сделать копию класса разбиения на страницы, внести изменения и использовать его. Таким образом, если вы обновите CI, вы не потеряете модификацию. Вот мое решение без изменения класса.

    Сначала я хочу сказать, что использование только опции конфигурации $config['use_page_numbers'] = TRUE также сделает трюк, но не полностью. То, что я выяснил, не работает, используя только этот параметр:
    если вы попытаетесь вручную отредактировать страницы строки url, они обрабатывают их как смещенные не похожие страницы, а также, если вы попытаетесь вернуться со страницы 2 на страницу 1, используя ссылку «prev», она также рассматривает номер страницы как смещение.

    Код:

     $config['base_url'] = base_url('my/url/page'); $config['total_rows'] = count($this->my_model->get_all()); $config['per_page'] = 2; $config['use_page_numbers'] = TRUE; $config['uri_segment'] = 4; //i'm looading the pagination in the constuctor so just init here $this->pagination->initialize($config); if($this->uri->segment(4) > 0) $offset = ($this->uri->segment(4) + 0)*$config['per_page'] - $config['per_page']; else $offset = $this->uri->segment(4); //you should modify the method in the model to accept limit and offset or make another function - your choice $data['my_data'] = $this->my_model->get_all($config['per_page'], $offset); 

    Сюда
    page = false (my / url) или (my / url / page) – в основном, если четвертый сегмент uri является ложным,
    page = 0 (my / url / page / 0),
    а также
    page = 1 (my / url / page / 1)

    будет отображаться первая страница, а затем другие ссылки будут работать нормально. Я также проверяю страницу, например, если кто-то хочет ввести (my / url / page / 2323), это вызовет ошибку, и в модели вы должны проверить, является ли результат ложным, и если это контроллер должен показать ошибку страницы или что-то еще. Надеюсь это поможет.

    Вы можете избежать ошибок php, если кто-то вручную вводит номер страницы из URL-адреса:

    например, my / url / page / 786, ваш результат может не иметь ничего, что можно было бы отобразить для запроса 786, по умолчанию он покажет вам ошибку php .., чтобы избежать этого, вы можете использовать:

     if (isset($result)) { $isArray = is_array($result) ? "YES" : "NO"; //check that result is an array or not as per your requirement. if ($isArray == "YES") { echo "show your stuffs here.."; } else{ echo "display your message instead for php error here.."; } } 

    надеюсь, это поможет … для запроса tweet me в twitter @sufiyantech