2017-02-15 1 views
1

У меня есть страница с функцией поиска. Чтобы продолжить поиск параметров, когда требуется разбиение на страницы, я должен передать поисковый запрос на ссылки для разбивки на страницы.Решения для разбивки на страницы с функцией поиска

$config['reuse_query_string'] = FALSE; 

By default your Query String arguments (nothing to do with other query string options) will be ignored. Setting this config to TRUE will add existing query string arguments back into the URL after the URI segment and before the suffix.: 

http://example.com/index.php/test/page/20?query=search%term 

This helps you mix together normal URI Segments as well as query string arguments, which until 3.0 was not possible. 

Но установка этого ИСТИНА не добавляет поисковый запрос после URI смещения сегмента (после того, как выполняется поиск). Однако мне удалось использовать

$config['suffix'] = "?my_search_input=$my_query_value"; 

создать ссылки, которые нумерации страниц выглядят что-то вроде /method/controller/20/?my_search_input=hello

Но мой вопрос ...

Это лучший способ сделать это, и почему не $config['reuse_query_string'] = TRUE; добавить это обратно к URL-адресу автоматически? Я не понимаю документацию правильно?

Спасибо.

+1

Ваши ссылки на страницы ed, чтобы содержать строку GET, ничто никогда не было автоматическим ... для этого вам нужно сгенерировать их в href –

+0

Так что '$ config ['suffix']' правильное место для размещения запроса и получения строки? Думаю, теперь я понимаю, что такое 'reuse_query_string'. Похоже, что он устанавливает значение ИСТИНА, передает строку запроса в первую ссылку на страницы, после того как вы перешли к другой ссылке на страницы. Упоминается здесь: http://blog.marcomonteiro.net/post/codeigniter-pagination-re-use-query-strings – user3442612

ответ

1

попробовать это изменение кода ваше требование и таблицу

комплект контроллера таким образом

<?php 
class pagination extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper('form'); 
     $this->load->helper('url'); 
     $this->load->database(); 
     $this->load->library('pagination'); 
     $this->load->model('pagination_model'); 
    } 

    public function index() 
    { 
     //pagination settings 
     $config['base_url'] = site_url('pagination/index'); 
     $config['total_rows'] = $this->db->count_all('tbl_books'); 
     $config['per_page'] = "3"; 
     $config["uri_segment"] = 3; 
     $choice = $config["total_rows"]/$config["per_page"]; 
     $config["num_links"] = floor($choice); 

     // integrate bootstrap pagination 
     $config['full_tag_open'] = '<ul class="pagination">'; 
     $config['full_tag_close'] = '</ul>'; 
     $config['first_link'] = false; 
     $config['last_link'] = false; 
     $config['first_tag_open'] = '<li>'; 
     $config['first_tag_close'] = '</li>'; 
     $config['prev_link'] = '«'; 
     $config['prev_tag_open'] = '<li class="prev">'; 
     $config['prev_tag_close'] = '</li>'; 
     $config['next_link'] = '»'; 
     $config['next_tag_open'] = '<li>'; 
     $config['next_tag_close'] = '</li>'; 
     $config['last_tag_open'] = '<li>'; 
     $config['last_tag_close'] = '</li>'; 
     $config['cur_tag_open'] = '<li class="active"><a href="#">'; 
     $config['cur_tag_close'] = '</a></li>'; 
     $config['num_tag_open'] = '<li>'; 
     $config['num_tag_close'] = '</li>'; 
     $this->pagination->initialize($config); 

     $data['page'] = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; 

     // get books list 
     $data['booklist'] = $this->pagination_model->get_books($config["per_page"], $data['page'], NULL); 

     $data['pagination'] = $this->pagination->create_links(); 

     // load view 
     $this->load->view('pagination_view',$data); 
    } 

    function search() 
    { 
     // get search string 
     $search = ($this->input->post("book_name"))? $this->input->post("book_name") : "NIL"; 

     $search = ($this->uri->segment(3)) ? $this->uri->segment(3) : $search; 

     // pagination settings 
     $config = array(); 
     $config['base_url'] = site_url("pagination/search/$search"); 
     $config['total_rows'] = $this->pagination_model->get_books_count($search); 
     $config['per_page'] = "5"; 
     $config["uri_segment"] = 4; 
     $choice = $config["total_rows"]/$config["per_page"]; 
     $config["num_links"] = floor($choice); 

     // integrate bootstrap pagination 
     $config['full_tag_open'] = '<ul class="pagination">'; 
     $config['full_tag_close'] = '</ul>'; 
     $config['first_link'] = false; 
     $config['last_link'] = false; 
     $config['first_tag_open'] = '<li>'; 
     $config['first_tag_close'] = '</li>'; 
     $config['prev_link'] = 'Prev'; 
     $config['prev_tag_open'] = '<li class="prev">'; 
     $config['prev_tag_close'] = '</li>'; 
     $config['next_link'] = 'Next'; 
     $config['next_tag_open'] = '<li>'; 
     $config['next_tag_close'] = '</li>'; 
     $config['last_tag_open'] = '<li>'; 
     $config['last_tag_close'] = '</li>'; 
     $config['cur_tag_open'] = '<li class="active"><a href="#">'; 
     $config['cur_tag_close'] = '</a></li>'; 
     $config['num_tag_open'] = '<li>'; 
     $config['num_tag_close'] = '</li>'; 
     $this->pagination->initialize($config); 

     $data['page'] = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0; 
     // get books list 
     $data['booklist'] = $this->pagination_model->get_books($config['per_page'], $data['page'], $search); 

     $data['pagination'] = $this->pagination->create_links(); 

     //Load view 
     $this->load->view('pagination_view',$data); 
    } 
} 
?> 

множественная модель таким образом

<?php 
class pagination_model extends CI_Model{ 

    function __construct() 
    { 
     parent::__construct(); 
    } 

    //fetch books 
    function get_books($limit, $start, $st = NULL) 
    { 
     if ($st == "NIL") $st = ""; 
     $sql = "select * from tbl_books where name like '%$st%' limit " . $start . ", " . $limit; 
     $query = $this->db->query($sql); 
     return $query->result(); 
    } 

    function get_books_count($st = NULL) 
    { 
     if ($st == "NIL") $st = ""; 
     $sql = "select * from tbl_books where name like '%$st%'"; 
     $query = $this->db->query($sql); 
     return $query->num_rows(); 
    } 
} 
?> 

вид выглядеть следующим образом

<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>CodeIgniter Pagination Example with Search Query Filter</title> 
    <link rel="stylesheet" href="<?php echo base_url("bootstrap/css/bootstrap.css"); ?>"> 

    <style type="text/css"> 
    .bg-border { 
     border: 1px solid #ddd; 
     border-radius: 4px 4px; 
     padding: 15px 15px; 
    } 
    </style> 
</head> 
<body> 
<div class="container"> 
    <div class="row"> 
     <div class="col-md-8 col-md-offset-2 well"> 
     <?php 
     $attr = array("class" => "form-horizontal", "role" => "form", "id" => "form1", "name" => "form1"); 
     echo form_open("pagination/search", $attr);?> 
      <div class="form-group"> 
       <div class="col-md-6"> 
        <input class="form-control" id="book_name" name="book_name" placeholder="Search for Book Name..." type="text" value="<?php echo set_value('book_name'); ?>" /> 
       </div> 
       <div class="col-md-6"> 
        <input id="btn_search" name="btn_search" type="submit" class="btn btn-danger" value="Search" /> 
        <a href="<?php echo base_url(). "index.php/pagination/index"; ?>" class="btn btn-primary">Show All</a> 
       </div> 
      </div> 
     <?php echo form_close(); ?> 
     </div> 
    </div> 

    <div class="row"> 
     <div class="col-md-8 col-md-offset-2 bg-border"> 
      <table class="table table-striped table-hover"> 
       <thead> 
        <tr> 
        <th>#</th> 
        <th>Book Name</th> 
        <th>Author Name</th> 
        <th>ISBN</th> 
        </tr> 
       </thead> 
       <tbody> 
       <?php for ($i = 0; $i < count($booklist); ++$i) { ?> 
       <tr> 
        <td><?php echo ($page+$i+1); ?></td> 
        <td><?php echo $booklist[$i]->name; ?></td> 
        <td><?php echo $booklist[$i]->author; ?></td> 
        <td><?php echo $booklist[$i]->isbn; ?></td> 
       </tr> 
       <?php } ?> 
       </tbody> 
      </table> 
     </div> 
    </div> 

    <div class="row"> 
     <div class="col-md-8 col-md-offset-2"> 
      <?php echo $pagination; ?> 
     </div> 
    </div> 
</div> 
</body> 
</html> 
+0

Спасибо, я просто переживаю это. У меня есть один вопрос. Части, которые говорят «NIL», вы имеете в виду «NULL»? – user3442612

+0

yeah thats null @ user3442612 –

+0

Спасибо, я решил придумать свое решение, но я ценю код. Я буду отмечать его как принятый ответ, поскольку он выглядит как жизнеспособное решение. – user3442612

 Смежные вопросы

  • Нет связанных вопросов^_^