Codeigniterのデータベースクエリによって返される結果の数をカウントする

StackOverflow https://stackoverflow.com/questions/3667715

質問

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;
        }
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top