У меня есть много записей в моей базе данных. Я пытаюсь отобразить одну запись для каждой страницы. Когда я выбираю кнопку отправки для поиска записей из базы данных, сначала отображается одна отдельная запись, а затем, когда я нажимаю следующую цифровую ссылку нумерации страниц, я не получаю никаких записей. результат вместо того, чтобы я получаю
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;
Я не уверен, что у вас есть в строке № 17, но я могу вам чем-то помочь, вам нужно сделать:
$this->pagination->initialize($config);
чтобы начать нумерацию страниц, вам не хватает этой строки. Пагинация не инициализируется в вашем коде.
Я могу помочь вам с другим советом: вы должны отправить смещение модели, чтобы сделать запрос БД. И вы должны повторно отправить поля поиска, если вы нажимаете на одну из ссылок нумерации страниц, данные публикации больше не существуют при следующем вызове, поэтому вы потеряли искомые значения.
Я исправил эту проблему раньше с помощью небольшого трюка с jquery. Ссылки на страницы должны повторно отправлять форму, а не просто ссылку. Что-то вроде
$('.pagination a').click(function(){
$('#your-form').submit();
});
В противном случае вы должны снова пройти весь поиск по строке запроса, и этот метод действительно ужасен и делает ваш контроллер запутанным и полным «если»