Intereting Posts
Как предотвратить доступ к страницам администратора, зная URL-адрес страницы администратора? Doctrine many-to-one возвращает только идентификатор Является ли SPLFileObject атомарным? PHP, если строка содержит URL, изолировать ее Самый быстрый способ узнать Zend Framework? Кнопка загрузки PHP не работает Создание пустого файла Оператор Insert не работает с использованием execute (array ()) расширения PDO Удалить раздел информации о заказе из шаблона электронной почты в woocommerce XML: сохранение нескольких значений дочернего узла в php-массив Расширение mysqli отсутствует, phpmyadmin не работает Подключить API календаря Google, получить пустой массив с помощью php Нужно ли мне base64 кодировать мою соль (для хэширования паролей)? Получить размеры изображения с помощью Curl Синтаксическая ошибка Sql с использованием запроса базы данных UPDATE Реляционный API: where () не может определить столбец, используя классы с именами

$ offset не работает для кодирования кода страницы

Я пытаюсь реализовать Pagination на странице поиска. Я вчера задал этот вопрос без каких-либо результатов. Записи не ограничивались поисковой страницей, используя разбиение на код

и проблема, которая у меня сейчас, немного отличается.

ситуация

Мои ссылки на страницы работают, и я вижу изменение URL-адреса следующим образом: http://example.com/home/searchresults/2 (для второй страницы разбивки на страницы) и т. Д. Но показаны все результаты поиска. Когда я изменяю лимит на 1, я получаю больше ссылок, так что он работает правильно.

Вопрос

Что может быть эта глупая проблема? Я думаю, что это связано с моим Total_rows

Мой контроллер:

function searchresults() { $this->breadcrumbs->page = array('link'=> base_url().'home/search' ,'title' => 'Bedrijven Zoeken' ); $this->breadcrumbs->method = array('link'=> base_url().'home/searchresults' ,'title' => 'Zoekresultaten' ); $data['breadcrumbs'] = $this->breadcrumbs->get(); $match = $this->input->post('search'); if(strlen($this->input->post('cookie')) > 0){ $match2 = $this->input->post('cookie'); } else{ $match2 = '9101'; } $this->load->library('pagination'); $limit = 4; $offset=($this->uri->segment(3)) ? $this->uri->segment(3) : 0; $config['base_url'] = base_url().'home/searchresults/'; $config['total_rows'] = count($this->bedrijven_model->get_search($match, $match2, $limit, $offset )); $config['per_page'] = $limit; $config['use_page_numbers'] = TRUE; $config['num_links'] = 5; $this->pagination->initialize($config); $offset = $this->uri->segment(3); $data['links'] = $this->pagination->create_links(); //$data['query'] = $this->bedrijven_model->get_search($match, $match2, 2147483647, 0); /*large number as limit to retrieve all the rows*/ $data['query_curr'] = $this->bedrijven_model->get_search($match, $match2, $config['per_page'], $this->uri->segment(3) ); $this->load->view('views/header'); $this->load->view('views/searchresults', $data); $this->load->view('views/footer'); } 

Моя модель:

 function get_search($match, $match2, $limit, $offset=0) { if(!isset($_SESSION)) { session_start(); }; /* $string = implode($_SESSION['postcodes'], '|'); $string2 = $_SESSION['searched_post_code']; */ $postcodes = (is_array($_SESSION['postcodes']) ? $_SESSION['postcodes'] : array()); $postcodes[] = $_SESSION['searched_post_code']; $postcodes = array_filter(filter_var_array($postcodes, FILTER_VALIDATE_INT)); $string = join(',', $postcodes); if (!isset($_COOKIE['cookie'])) { $query = "SELECT * FROM (`bedrijfcategorieen`) JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' OR `Plaats` LIKE '%".$this->input->post('search')."%' OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' OR `Email` LIKE '%".$this->input->post('search')."%' OR `Website` LIKE '%".$this->input->post('search')."%' OR `Profiel` LIKE '%".$this->input->post('search')."%' OR `Adres` LIKE '%".$this->input->post('search')."%' OR `Categorie` LIKE '%".$this->input->post('search')."%') AND (Postcode IN ($string)) GROUP BY `Categorie`, `bedrijfcategorieen`.`idbedrijven`"; $query = $this->db->query($query); $this->db->limit($limit, $offset); echo '<pre>'; echo '</pre>'; $result = $query->result_array(); return $result; } 

Надеюсь, кто-то может мне помочь. Я борюсь с этим уже почти 3 часа.

Вам нужен ваш лимит / смещение внутри строки $query :

 $query = "SELECT * FROM (`bedrijfcategorieen`) JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' OR `Plaats` LIKE '%".$this->input->post('search')."%' OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' OR `Email` LIKE '%".$this->input->post('search')."%' OR `Website` LIKE '%".$this->input->post('search')."%' OR `Profiel` LIKE '%".$this->input->post('search')."%' OR `Adres` LIKE '%".$this->input->post('search')."%' OR `Categorie` LIKE '%".$this->input->post('search')."%') AND (Postcode IN ($string)) GROUP BY `Categorie`, `bedrijfcategorieen`.`idbedrijven` LIMIT ".$offset.", ".$limit; $result = $this->db->query($query); return $result->result_array(); 

$this->db->limit работает только с активными записями. В любом случае, измените свой запрос на этот

 $query = "SELECT * FROM (`bedrijfcategorieen`) JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' OR `Plaats` LIKE '%".$this->input->post('search')."%' OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' OR `Email` LIKE '%".$this->input->post('search')."%' OR `Website` LIKE '%".$this->input->post('search')."%' OR `Profiel` LIKE '%".$this->input->post('search')."%' OR `Adres` LIKE '%".$this->input->post('search')."%' OR `Categorie` LIKE '%".$this->input->post('search')."%') AND (Postcode IN ($string)) GROUP BY `Categorie`, `bedrijfcategorieen`.`idbedrijven` LIMIT $offset,$limit"; $query = $this->db->query($query); 

Еще одна вещь, не нужно использовать $ this-> db-> limit