【问题标题】:Codeigniter: How to paginate search resultsCodeigniter:如何对搜索结果进行分页
【发布时间】:2016-03-21 00:17:23
【问题描述】:

当我搜索关键字时,它只会显示数据库中的所有类似内容。然后,如果我单击分页中的下一个。关键字丢失。如果我单击分页中的下一步按钮,如何维护搜索到的关键字?

控制器:

public function info($offset=0)
{       
$filter = $this->input->get("filter");
    $limit = 5;
    $this->load->library('pagination');
    $filter = $this->input->get("filter");


    $this->db->where('is_valid','1');
    $this->db->like('requested_by',$filter);
    $search = $this->input->get("search");
      $page = $this->uri->segment(3);
    $config["base_url"] = "/ticketing/index.php/ticketing/info/";

    $config['total_rows'] = $this->db->count_all_results('db_ticketing.tr_ticket');
    $config['per_page'] = $limit;
//  $config['base_url'] = ("/ticketing/index.php/ticketing/info/");
    $config['use_page_numbers'] = false;
    $config['num_links'] = 4;


    $config['first_link'] = 'First';
    $this->pagination->initialize($config);
    $data['pagination'] = $this->pagination->create_links();



$data['ticket_list'] = $this->ticketing_mdl->get_all_ticket( $limit, $offset);



    $this->load->view('ticketing/header');
    $this->load->view('ticketing/left_menu');
    $this->load->view('ticketing/info',$data);
}

型号

function get_all_ticket($limit,$offset)
{
    if($this->input->get('search')){
     $match = $this->input->get('search');
        $sql = "SELECT * FROM db_ticketing.tr_ticket WHERE requested_by LIKE '%$match%' limit $limit offset  $offset";
        return $this->db->query($sql);

    }
}

查看:

<form method="get" action="">
                <tr>
                    <td>Search:</td> 
                    <td><input type="text" name="search" /></td>

                </tr>
                </form> 

【问题讨论】:

  • 您可以使用 session 或 uri 段在 ci 中搜索下一页。
  • 尝试了 uri 段,但不知道如何正确实现它。
  • 你会得到 $this->uri->segment();存储在一个变量中,然后使用该变量搜索下一页。

标签: codeigniter search pagination


【解决方案1】:

试试这个

在控制器中

$this->load->library('pagination');

$count = $this->ticketing_mdl->count_all_ticket(); # get total count matched
//product pagination
$config['base_url'] = base_url() . '/ticketing/index.php/info/';
$config['total_rows'] = $count;
$config['per_page'] = 5;
$config['uri_segment'] = 3;
$limit = $config['per_page'];

//Bootstrap pagination style
$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'] = '&laquo';
$config['prev_tag_open'] = '<li class="prev">';
$config['prev_tag_close'] = '</li>';
$config['next_link'] = '&raquo';
$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);
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$data['links'] = $this->pagination->create_links();

$data['ticket_list'] = $this->ticketing_mdl->get_all_ticket($limit,$page);

$this->load->view('ticketing/header');
$this->load->view('ticketing/left_menu');
$this->load->view('ticketing/info',$data);

**在模型中**

# get count of record
function count_all_ticket()
{
    if($this->input->get('search')){
        $match = $this->input->get('search');
        $sql = "SELECT * FROM db_ticketing.tr_ticket WHERE requested_by LIKE '%$match%'";
        $query =  $this->db->query($sql);
        $result = $query->result_array();

        $count = count($result);
        return $count;

    }
}

# get all results matched
function get_all_ticket($limit,$page)
{
    if($this->input->get('search'))
    {
        $match = $this->input->get('search');
        $sql = "SELECT * FROM db_ticketing.tr_ticket WHERE requested_by LIKE '%$match%'  LIMIT $page, $limit";
        $query =  $this->db->query($sql);
        $result = $query->result_array();
        return $result;
    }
}

【讨论】:

  • 分页工作不正常。我也收到了这个错误(严重性:错误消息:调用数组上的成员函数结果())
  • 当我点击分页链接时仍然有同样的问题 url 重置然后搜索关键字消失了。
【解决方案2】:

我遇到了同样的问题。 我是这样解决的:

  • 我通过 post 方法从搜索表单中获取了我的搜索关键字到 functionOne()。
  • 我刚刚使用关键字创建了一个会话,然后重定向到另一个 函数说 functionTwo()。
  • 在新创建的函数,即 functionTwo() 中,我从会话中获取关键字并编写 CodeIgniter 分页代码。
  • 在分页代码的'base_url'中,我使用了functionTwo()。

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 2014-12-14
    • 2014-03-26
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多