Intereting Posts
исключая двойной http из url Ошибка Joomla: «Незаконные переменные _files или _env или _get или _post или _cookie или _server или _session или globals переданы скрипту ' Facebook не показывает все открытые графические изображения игнорировать pre-теги при использовании nl2br () Выполнить «меньше» из командной строки PHP w / Scrolling Асинхронное шифрование в Swift file_get_contents Connection Timed Out для некоторого содержимого Потяните изображение профиля щебета PHP – синтаксический анализ данных многочастной формы Отправить почту с помощью PHP Присвоение результата функции переменной в классе PHP? Опухоль правильный способ загрузки сопоставления массивов хешей mongodb, если не использовать аннотации со странными аксессуарами Извлечение зарегистрированного домена из URL на основе Public Suffix List Создание массива без ключей в цикле Как написать модульные тесты для интерактивного консольного приложения

Подсчет количества результатов, возвращаемых запросом базы данных в Codeigniter

Мне не очень повезло, когда запрос базы данных в Codeigniter возвращает нулевые результаты. Я хорошо прочитал заметки о функции подсчета PHP, но я не мудрее!

Я вызываю запрос / представление следующим образом из контроллера:

$data['result'] = $this->search_model->do_search(set_value('name')); $data['title'] = "Search results"; $this->load->view('search_view',$data); 

В представлении создается таблица результатов для меня ОК, но когда я пытаюсь уловить пустой результат, счетчик всегда возвращает 1:

Я попытался, if count(array($result)) и просто, if count($result)

Итак, какой хороший способ получить счет? Я использую Fedora 13 с PHP 5.3.3 на своем ноутбуке dev.

    Посмотрите на $query->num_rows (<- clickable).

    Лучше всего сделать в вашей модели следующее:

     $query = $this->db->something().... ... ... if ( $query->num_rows() > 0 ) { return $query->result(); } else { return FALSE; } 

    Затем в вашем контроллере или представлении вы сделаете следующее:

     if ( !empty($my_db_result) ) { ...... } 

    Этот процесс позволяет вам реагировать на результат на основе типа результата. Если строки могут быть восстановлены, это вернет массив, из которого элементы могут быть подсчитаны функцией count () PHP. Поскольку второй блок проверяет, является ли результат пустым (обратите внимание, что «FALSE» рассматривается как пустой), вы не столкнетесь ни с какими проблемами (например, при использовании цикла foreach), и вы можете указать, что делать, если бы не было Результаты.

    Попробуйте, if(isset($result) && count($result)) в вашем файле вида, то внутри оператора if вы можете написать код, который вы хотите выполнить, когда вставки в вашем db больше 0 … удачи!

    Если вы положите count($result) в оператор if затем, когда он завершится, он возвращает только 1 .

    Вы можете попробовать $query->num_rows() по-другому.

    например, я подсчитываю, чтобы показать администраторам, подключенным и подключенным пользователям

    База данных

    в пользователях я добавляю таблицу: [status] [int] [1]

    у пользователей также есть: [role] [varchar] [255]

    Обновить statut до 1 (onligne) при проверке авторизации ()

     if($this->model_users->can_log_in($email,$pass)){ $update = array('status' => 1); $this->model_users->update_onligne($email,$update); redirect('main/members'); 

    и модель:

     public function update_onligne($email,$update){ $this->db->where('email',$email); $this->db->update('users',$update); return true; } 

    Обновить статус в автономном режиме при выходе из системы ()

    Контроллер выхода:

     public function logout(){ $id = $this->session->userdata('id'); $update = array('status' =>0); $this->model_users->logout($id,$update); $this->session->sess_destroy(); redirect('main/login'); } из public function logout(){ $id = $this->session->userdata('id'); $update = array('status' =>0); $this->model_users->logout($id,$update); $this->session->sess_destroy(); redirect('main/login'); } 

    Выходная модель:

     public function logout($id,$update){ $this->db->where('id',$id); $this->db->update('users', $update); return; } 

    Граф Онлинь:

    Контроллер:

     $data['admin_onligne'] = $this->model_users->count_onligne_admin(); $data['user_onligne'] = $this->model_users->count_onligne_users(); $this->load->view('template/page_left',$data); 

    Модель :

     public function count_onligne_admin(){ $query = $this->db->query('SELECT COUNT(status) AS enligneadmin FROM users WHERE status=1 AND role="admin"')->row_object(); return $query->enligneadmin; } public function count_onligne_users(){ $query = $this->db->query('SELECT COUNT(status) AS enligneuser FROM users WHERE status=1 AND role="etudiant"')->row_object(); return $query->enligneuser; } 

    Средство просмотра

     <span><?php echo $user_onligne ;?> User en ligne</span> <span><?php echo $admin_onligne ;?> Admin en ligne</span> 

    я обманываю это, и это работает для меня

    контроллер

     $id = $this->session->userdata('id'); if($this->model_users->if_user_dont_have_email($id)){ .... } 

    Пользователи модели

     public function if_user_dont_have_email($id){ $query = $this->db->query("SELECT email FROM users WHERE id='$id'"); if ($query->num_rows() > 0) { $row = $query->row_array(); if(empty($row['email'])){ return true; }else{ return false; } } }