Codeigniter分页脚本无效

时间:2014-09-15 13:33:57

标签: php codeigniter pagination

我的数据库中有很多记录我试图为每个页面显示一条记录。当我选择提交按钮来搜索数据库中的记录时,第一条记录正在显示,然后当我点击下一个数字链接时分页我没有得到任何结果而不是我得到

A PHP Error was encountered
Severity: Warning
Message: Invalid argument supplied for foreach()
Filename: controllers/searchresult.php
Line Number: 17

我的控制器从这里开始

public function users($limit=1)
 {
 $this->load->helper('url');
    $data = array();
    $offset=1;
    $look = $this->input->post('look');
    $age = $this->input->post('age');
    $age_from = $this->input->post('age_from');
    $age_to = $this->input->post('age_to');
    $se_ct = $this->input->post('sect');
    $subsect = $this->input->post('subsect');
    $coun_try = $this->input->post('country');
    $sta_te = $this->input->post('state');
    $ci_ty = $this->input->post('city');
    $qualification = $this->input->post('qualification');
    $results = $this->searchresultss->login($look, $age, $age_to, $age_from, $se_ct, $subsect, $coun_try, $sta_te, $ci_ty, $qualification);
    $this->load->helper('url');
    $config = array();
    $config['base_url'] = base_url().'searchresult/users';
    $config['total_rows'] = count($results);
    $config['per_page'] = $limit;
    $this->load->library('pagination', $config);
    $data['pagination_links'] = $this->pagination->create_links();
    $data['results'] = array_slice($results,$offset,$limit);
$this->load->view('searchresult', $data);
}

**my model page starts here**

 public function login($look, $age, $age_to, $age_from, $se_ct, $subsect, $coun_try, $sta_te, $ci_ty, $qualification)
            {
return $this->db->query("SELECT *
FROM users
WHERE  

if('$se_ct'!='',sect =  '$se_ct' AND if('$subsect' !='',subsect =  '$subsect',subsect like  '%%'),sect like  '%%' AND subsect like  '%%')
AND
IF( '$coun_try' !='', country =  '$coun_try'
AND 
if('$sta_te' !='', state =  '$sta_te'
AND  
if('$ci_ty' !='',city =  '$ci_ty',city like  '%%'),state LIKE  '%%'
AND city LIKE  '%%'), country LIKE  '%%'
AND state LIKE  '%%'
AND city LIKE  '%%' ) 
AND age >=  '$age_from'
AND age <=  '$age_to'
AND 
IF('$qualification' !='',qualification =  '$qualification',  qualification LIKE  '%%' ) 
AND gender =  '$look'
And status='1'")->result();
            }     
}

**My view page starts here**

if (empty($results)) {
    echo 'Results set is empty';
} else {
foreach ($results as $data) {
        echo $data->email.'<br />';
    }
}
echo $pagination_links;

2 个答案:

答案 0 :(得分:0)

我不确定你在第17行中有什么,但我可以帮助你做一些事情,你需要这样做:

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

让分页开始工作,你错过了这一行。分页中没有初始化分页。

答案 1 :(得分:0)

我可以帮助您另一个提示:您必须将偏移量发送到模型以进行数据库查询。并且您必须重新发送搜索字段,如果您点击其中一个分页链接,则下次调用中不再存在帖子数据,因此您丢失了搜索的值。

我之前用一点jquery技巧解决了这个问题。分页链接必须重新发送表单而不仅仅是一个链接。像

这样的东西
$('.pagination a').click(function(){

    $('#your-form').submit();
});

换句话说,你必须通过查询字符串再次传递所有搜索,并且该方法非常难看并且让你的控制器感到困惑并且充满了“ifs”