registros query num_rows modelo example contar consultas php codeigniter database-abstraction

php - query - Contando el número de resultados devueltos por una consulta de base de datos en Codeigniter



select count codeigniter (6)

Eche un vistazo a $query->num_rows (<- clickable).

No estoy teniendo mucha suerte de detectar cuando una consulta de base de datos en Codeigniter arroja cero resultados. He tenido una buena lectura de las notas sobre la función de conteo de PHP, pero no soy el más sabio.

Llamo a la consulta / vista del siguiente modo desde el controlador:

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

La vista genera una tabla de resultados para mí, pero cuando intento interceptar un resultado vacío, el recuento siempre devuelve 1:

He intentado if count(array($result)) y solo if count($result)

Entonces, ¿cuál es una buena forma de obtener el conteo? Estoy usando Fedora 13 con PHP 5.3.3 en mi laptop dev.


Estoy bañando esto y funcionó para mí

Controlador

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

Usuarios de modelos

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; } } }


Lo mejor que puedes hacer en tu modelo es lo siguiente:

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

Luego, en su controlador o vista, haría lo siguiente:

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

Este proceso le permite responder sobre el resultado según el tipo de resultado. Si las filas se pueden recuperar, se devolverá una matriz cuyos elementos se pueden contar mediante la función count () de PHP. Dado que el segundo bloque verifica si el resultado está vacío (tenga en cuenta que "FALSO" se trata como si estuviera vacío) no encontrará ningún problema (por ejemplo, al utilizar un ciclo foreach) y podrá especificar qué hacer en caso de que no haya resultados.


Pruebe if(isset($result) && count($result)) en su archivo de vista y luego dentro de la declaración if puede escribir el código que desea ejecutar cuando las inserciones en su db son más de 0 ... ¡buena suerte!


Si coloca el count($result) en la instrucción if , luego, cuando suceda, solo devuelve 1 .

Puede probar $query->num_rows() de una manera diferente.


por ejemplo, cuento para mostrar a los administradores conectados y los usuarios conectados

Base de datos

en los usuarios agrego tabla: [estado] [int] [1]

en usuarios también tengo: [role] [varchar] [255]

Actualizar statut a 1 (onligne) en la validación de inicio de sesión ()

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

y el modelo:

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

Actualizar estado a fuera de línea en logout ()

Controlador de cierre de sesión

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''); }

Modelo de cierre de sesión:

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

Conde Onligne:

El controlador :

$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);

El modelo :

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; }

El espectador

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