Codeigniterのデータベースクエリによって返される結果の数をカウントする
-
01-10-2019 - |
質問
Codeigniterのデータベースクエリが結果の結果を返すとき、私はあまり運がありません。私はPHPカウント関数に関するメモをよく読んでいますが、賢明ではありません!
コントローラーから次のようにクエリ/ビューを呼び出します。
$data['result'] = $this->search_model->do_search(set_value('name'));
$data['title'] = "Search results";
$this->load->view('search_view',$data);
ビューは私のための結果テーブルを生成しますOKですが、空の結果をトラップしようとすると、カウントは常に1を返します。
私が試してみました if count(array($result))
そしてただ if count($result)
では、カウントを取得する良い方法は何ですか?私は開発者ラップトップでPHP 5.3.3でFedora 13を使用しています。
解決
見て $query->num_rows
(< - クリック可能)。
他のヒント
モデルで最善のことは次のとおりです。
$query = $this->db->something()....
...
...
if ( $query->num_rows() > 0 )
{
return $query->result();
}
else
{
return FALSE;
}
次に、コントローラーまたは表示で次のことを行います。
if ( !empty($my_db_result) )
{
......
}
このプロセスを使用すると、結果タイプに基づいて結果に応答できます。行を取得できる場合、これにより、アイテムがphpのcount()関数によってカウントできる配列が返されます。 2番目のブロックは結果が空であるかどうかをチェックするため(「false」は空であると扱われることに注意してください)、問題にぶつかりません(たとえば、foreachループを使用する場合)。結果。
試す if(isset($result) && count($result))
ビューファイルでは、IFステートメント内で、DBの挿入が0を超えているときに実行するコードを書き込むことができます...幸運を祈ります!
あなたが置くなら count($result)
の if
声明はそれが成功したとき、それは返されるだけです 1
.
あなたが試すことができます$query->num_rows()
別の方法で。
たとえば、接続されたANSユーザーが接続されていることを示すためにカウントします
データベース
ユーザーにテーブルを追加:[ステータス] [int] [1
ユーザーにも私も持っています:[役割] [varchar] [255
login validation()の1(onligne)にattutを更新します
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;
}
logout()のオフラインにステータスを更新する
ログアウトコントローラー:
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;
}
カウントonligne:
コントローラー:
$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;
}
}
}