0

codeigniter アプリに問題があります。次のようなコントローラーメソッドをセットアップしました。

    public function program_search()
    {
    $config['base_url'] = base_url().'/site/program_search/';
    $config['total_rows'] = $this->db->get('wc_program')->num_rows();
    $config['per_page'] = 15;
    $config['num_links'] = 1;
    $config["uri_segment"] = 3;
    $config['num_links'] = 1;
    $config['full_tag_open'] = '<div class="pagination pagination-small"><ul>';
    $config['full_tag_close'] = '</ul></div>';
    $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 class="page">';
    $config['num_tag_close'] = '</li>';

    $this->pagination->initialize($config);
    $term = $this->input->post('term');

    $this->db->like('JobRef', $term);
    $this->db->or_like('Area', $term);
    $this->db->or_like('Parish', $term);
    $this->db->or_like('WorkType', $term);
    $this->db->or_like('Location', $term);
    $this->db->order_by('wc_program.JobRef');
    $this->db->limit(15, $this->uri->segment(3));  
    $q = $this->db->get('wc_program');
    if($q->num_rows() > 0) {
        $data['results'] = $q->result();    
    }    
    $data["links"] = $this->pagination->create_links();        
    $this->front->set('title', 'Search our current programmes');
    $this->front->set('metadesc', 'Program Search');
    $this->front->set('metakeywords', '');
    $this->front->buffer('content', 'site/program_search_results', $data);
    $this->front->render();
    }

ただし、検索ボックスに入力した内容に基づいて結果が表示されますが、結果が 15 件未満の場合でもページネーションが表示されますが、これは望ましくありません。結果が 15 を超える場合は、ページネーションが表示されますが、次のページに移動しても何も表示されません。コードから、私が間違ったことを教えてください。

私は何が間違っているのか本当に行き詰まっており、これについて助けが必要です...

事前に感謝

4

2 に答える 2

0

これを移動する必要があります

$this->db->like('JobRef', $term);
$this->db->or_like('Area', $term);
$this->db->or_like('Parish', $term);
$this->db->or_like('WorkType', $term);
$this->db->or_like('Location', $term);
$this->db->order_by('wc_program.JobRef');
$this->db->limit(15, $this->uri->segment(3));  
$q = $this->db->get('wc_program');
if($q->num_rows() > 0) {
    $data['results'] = $q->result();    
}

あなたのページネーション設定の上に、あなたが渡すことができるように

$q->num_rows()

パラメータに$config['total_rows']..

public function program_search()
{
    $term = $this->input->post('term');

    // records for pagination, without a limit
    $this->db->like('JobRef', $term);
    $this->db->or_like('Area', $term);
    $this->db->or_like('Parish', $term);
    $this->db->or_like('WorkType', $term);
    $this->db->or_like('Location', $term);
    $this->db->order_by('wc_program.JobRef');  
    $q = $this->db->get('wc_program');

    // records for displaying, with a limit
    $this->db->like('JobRef', $term);
    $this->db->or_like('Area', $term);
    $this->db->or_like('Parish', $term);
    $this->db->or_like('WorkType', $term);
    $this->db->or_like('Location', $term);
    $this->db->order_by('wc_program.JobRef');
    $this->db->limit(15, $this->uri->segment(3));  
    $query = $this->db->get('wc_program');

    if($query->num_rows() > 0) {
        $data['results'] = $query->result();    
    }

    // pagination
    $config['base_url'] = base_url().'/site/program_search/';
    $config['total_rows'] = $q->num_rows(); // new pagination setting, using the unlimited results
    $config['per_page'] = 15;
    $config['num_links'] = 1;
    $config["uri_segment"] = 3;
    $config['num_links'] = 1;
    $config['full_tag_open'] = '<div class="pagination pagination-small"><ul>';
    $config['full_tag_close'] = '</ul></div>';
    $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 class="page">';
    $config['num_tag_close'] = '</li>';

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

    $data["links"] = $this->pagination->create_links();        
    $this->front->set('title', 'Search our current programmes');
    $this->front->set('metadesc', 'Program Search');
    $this->front->set('metakeywords', '');
    $this->front->buffer('content', 'site/program_search_results', $data);
    $this->front->render();
}

オフセット パラメータも微調整する必要があるかもしれません。このコードをローカルでテストすることはできませんが、開始できるはずです。

于 2013-06-06T18:10:11.380 に答える