Не удается выполнить поиск по пагинации с использованием ключевого слова - PullRequest
0 голосов
/ 07 октября 2011

Кто-нибудь знает, как выполнить поиск по страницам с помощью ключевого слова, работающего по ссылке на второй странице, с использованием CodeIgniter?

Я хотел бы добавить в свой поиск нумерацию страниц.Мой поиск по ключевым словам работает нормально, я использую одну форму поиска ключа, я вижу правильное отображение первой страницы, но проблема в том, что я не могу заставить работать ссылку на вторую страницу и ссылки на другие страницы.Предполагается, что сделано два разных запроса (когда пользователь нажимает на кнопку поиска, ссылки нумерации страниц)

Как запустить работающую ссылку нумерации страниц?

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Вы успешно создали постраничные ссылки?

Вам нужна функция CI, которая называется, например, "поиск".Для этого потребуются два параметра: search_query и page.

Для каждой загрузки страницы необходимо повторно выполнить поисковый запрос, но с использованием функции LIMIT в SQL, чтобы получить только требуемые результаты, то есть для этого диапазона страниц.Вам также нужно где-то установить количество результатов для каждой страницы.

У меня сейчас нет своих проектов CI, чтобы публиковать код, но вы должны думать так:

SELECTrequired_info FROM searchable_table WHERE searchable_field = "search query" LIMIT 0, 49

Приведенный выше запрос вернет результаты для первой страницы, содержащей 50 результатов.

Чтобы сделать это для второй страницы, которую вы используете:LIMIT 50, 100 и т. Д. *

для расчета первого параметра: использование: resultsPerPage * pageNum

0 голосов
/ 08 октября 2011

Я хочу использовать нумерацию страниц при поиске слова, и у меня есть только одна форма ввода. Моя текущая проблема заключается в том, что когда я нажимаю «Вторая страница» или «Третья страница» и т. Д., Отображается список всех данных базы данных, которые не относятся к поиску по ключевым словам.

Кто-нибудь может помочь мне решить эту проблему? Я застрял

Вот текущий код:

Контроллер

public function index() {
    // If search button doesn't press
    if(!isset($_POST['search'])) {
        // reset the search terms session
        $this->session->unset_userdata($this->tabKeyword);

        // application_search is our view that contains the form
        $this->displayFilm();
    } else {
        $keyword = $this->input->post('keyword');

        if ($keyword) {
            $this->tabKeyword = $keyword;
            // Set keyword value into session
            $this->session->set_userdata('s_keyword', $this->tabKeyword);
        }
        $this->displaySearchResult();
    }   
}


/*
 * Display the search result when using keyword as search item
 * @class   Public
 * @param   void
 * @return  void
 */
public function displaySearchResult() {
    $data['title'] = "Search Results";

    // Get the third parameter defined of segment in URL
    $offset = $this->uri->segment(4);

    // Get total results of keyword search item
    $total_results = $this->film_model->totalSearchCount($this->input->post('keyword'));
    echo 'Total Results: ' . $total_results . "<br/>";

    $getKeyword = $this->session->userdata('s_keyword');
    echo 'Keyword session: ' . $getKeyword . "<br/>";

    $config['base_url'] = base_url() . '/index.php/film_controller/displaySearchResult/' . $getKeyword;
    $config['total_rows'] = $total_results; // Must return the number of keyword search result 
    $config['uri_segment'] = '4';
    $config['per_page'] = $this->results_per_page;

    // Init pagination, add results search items in searchResults array then load it in View
    $this->pagination->initialize($config);

    $data['searchResults'] = $this->film_model->getSearch($this->input->post('keyword'), $this->results_per_page, $offset);
    $this->load->view('film_result', $data);
}


public function displayFilm() {
    $total = $this->film_model->countAll();
    $offset = $this->uri->segment(3);

    $config['base_url'] = base_url() . '/index.php/film_controller/displayFilm';
    $config['total_rows'] = $total; 
    $config['uri_segment'] = '3';
    $config['per_page'] = $this->results_per_page;

    $this->pagination->initialize($config);

    $data['results'] = $this->film_model->getData($config['per_page'], $offset);
    $this->load->view('film', $data);
}

Модель

function countAll() {
    return $this->db->count_all('film_list');
}


public function getData($limit, $offset) {
    $this->db->select('actors, title, description, category');
    $query = $this->db->get('film_list', $limit, $offset);
    return $query;
}


public function getSearch($keyword, $limit, $offset) {
    $this->db->like('actors', $keyword);
    $this->db->or_like('title', $keyword);
    $this->db->or_like('category', $keyword);
    $this->db->order_by('title', 'ASC');
    $results = $this->db->get('film_list', $limit, $offset);

    return $results->result_array();
}

/*
 * @access  Public
 * @param   keyword
 * @return  void
 */
public function totalSearchCount($keyword) {
    $this->db->like('actors', $keyword);
    $this->db->or_like('title', $keyword);
    $this->db->or_like('category', $keyword);

    return $this->db->count_all_results('film_list');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...