codeigniter分页,在函数之间发送参数

时间:2013-07-17 09:52:35

标签: php codeigniter pagination

我有分页和codeigniter的问题。我有一个来自女巫的quick_searh视图我将信息提交给索引控制器函数并设置分页并调用quick_search方法来获取我想要的数据。它只是不起作用。我花了5个多小时重写这些方法,甚至从quick_search开始,然后转到索引函数,但没有任何效果,请帮忙。

    public function index(){

    // search parameters config
    $lawyer_name = $this->input->post('lawyer_name');
    $kanzlei = $this->input->post('kanzlei');
    $area_of_expertise = $this->input->post('area_of_expertise');
    $post_code = $this->input->post('post_code');
    $city = $this->input->post('city');

    $result = $this->quick_search(
        $this->uri->segment(3),
        $lawyer_name,
        $kanzlei,
        $area_of_expertise,
        $post_code,
        $city);

    if(isset($result)){
        // pagination config
        $this->load->library('pagination');
        $this->load->library('table');

        $config['total_rows'] = count($result);
        $config['base_url'] = 'http://localhost/anwalt/index.php/search/index';
        $config['per_page'] = 5;
        $config['num_links'] = 5;

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

        $data['search_result_array'] = $result;
        $data['main_content'] = 'pages/quick_search_results';
        $this->load->view('templates/home_body_content', $data);
    }
}

quick_search功能:

    public function quick_search($offset, $lawyer_name, $kanzlei, $area_of_expertise, $post_code, $city){

    // no input in the quick search
    if( empty($lawyer_name) && empty($kanzlei) && empty($area_of_expertise)
        && empty($post_code) && empty($city))
    {
        $result = 'nothing';

    } else {

        $this->load->model('quick_search_model');
        $result = $this->quick_search_model->get_search_results(
            $offset,
            $lawyer_name,
            $kanzlei,
            $area_of_expertise,
            $post_code,
            $city
            );
    }

    return $result;
}

sql是这样的:

$sql = "SELECT users.user_id, users.canonical_name, first_name, last_name, city, phone_number, kanzlei
    from users
    inner join user_normal_aos
    on users.user_id = user_normal_aos.user_id
    inner join normal_areas_of_expertise
    on user_normal_aos.normal_areas_of_expertise_id = normal_areas_of_expertise.normal_areas_of_expertise_id
    where ".implode(" AND ", $where);

    if(empty($offset)){
        $offset = 0;
    }

    $sql = $sql." LIMIT ".$offset.", 4";

显示数据,但我没有看到那里的分页..甚至当我想更改分段的URL时,它说我没有任何数据。

视图如下:

<h1>Quick search results</h1>
<?php 
if($search_result_array == "nothing"){
    echo "<h3>You havent inputed anything</h3>";    
} else {
    echo $this->table->generate($search_result_array);
}
echo $this->pagination->create_links();

2 个答案:

答案 0 :(得分:1)

根据您的搜索变量,您可以使用:

$lawyer_name = $this->input->post('lawyer_name');
$kanzlei = $this->input->post('kanzlei');
$area_of_expertise = $this->input->post('area_of_expertise');
$post_code = $this->input->post('post_code');
$city = $this->input->post('city');

/*pagination start*/
$this->load->library('pagination');
$config['base_url']         = base_url().'index.php/index/lawyer/'.$lawyer_name.'/kanzlei/'.$kanzlei.'/area_of_expertise/'.$area_of_expertise.'/post_code/'.$city.'/page/';
$config['total_rows']       = $this->model->count_all_results();    ###implement this function to count all the vodeos as per the search variables, just use the same function as "quick_search" but without the limit clause
$config['per_page']         = count($result);;
$config['uri_segment']      = 10;
$config['next_link']        = 'Next';
$config['prev_link']        = 'Prev';
$config['cur_tag_open']     = '<span class="active_page">';
$config['cur_tag_close']    = '</span>';
$this->pagination->initialize($config);
/*pagination end*/

答案 1 :(得分:0)

你不能使用$ this-&gt; pagination-&gt; create_links();视野中的方法。

使用$ data ['pagination'] = $ this-&gt; pagination-&gt; create_links();在加载视图之前的控制器中 并在视图中回显$ pagination

希望这会对你有所帮助。