2012-03-07 5 views
1

テーブルから行数を取得するより良い方法はありますか?結果がない場合は現在、私は、エラーを返している、これを持っている:num_rowsを正しく取得する方法| Codeigniter

エラー: A PHPのエラーが発生しました

<p>Severity: Notice</p> 
<p>Message: Undefined property: Home::$count</p> 
<p>Filename: core/Model.php</p> 
<p>Line Number: 51</p> 

</div>{"status":"ok","content":""} 

コントローラ

public function do_messages() 
    { 
      $this->load->model('message_model'); 
      $user_id = $this->input->post('user_id'); 
      $this->message_model->unread_msg($user_id); 
      $mess = $this->message_model->unread_msg_count(); 
        if(isset($mess)){ 
          $result = array('status' => 'ok', 'content' => $mess); 
          echo json_encode($result); 
          exit(); 
        }else{ 
          $result = array('status' => 'ok', 'content' => ''); 
          echo json_encode($result); 
          exit(); 
        } 
    } 

モデル:

function unread_msg($user_id) 
    { 
      $query_str = "SELECT id FROM messages WHERE view = 0 AND dest = ?"; 
      $query = $this->db->query($query_str, $user_id); 

      if($query->num_rows() > 0) 
      { 
        $this->count = $query->num_rows(); 
      } 
    } 
    function unread_msg_count() 
    { 
    return $this->count; 
    } 

jsファイル:

function get_messages() 
    { 
     $.post(base_url + "index.php/home/do_messages", { user_id : user_msg }, function(data) { 
     if (data.status == 'ok') 
     { 
     $(".new_msg").removeClass('hide').html(data.content); 
     } 
     else 
     { 
     } 
    }, "json"); 
      } 
    get_messages(); 

答えて

3

はこれを試してみてください:

public function do_messages() 
    { 
      $this->load->model('message_model'); 
      $user_id = $this->input->post('user_id'); 
      $this->message_model->unread_msg($user_id); 
      $mess = $this->message_model->unread_msg_count(); 
        if($mess != false){ 
          $result = array('status' => 'ok', 'content' => $mess); 
          echo json_encode($result); 
          exit(); 
        }else{ 
          $result = array('status' => 'ok', 'content' => ''); 
          echo json_encode($result); 
          exit(); 
        } 
    } 

モデル:

function unread_msg($user_id) 
    { 
      $query_str = "SELECT id FROM messages WHERE view = 0 AND dest = ?"; 
      $query = $this->db->query($query_str, $user_id); 

      if($query->num_rows() > 0) 
      { 
        return $query->num_rows(); 
      } else { 
        return false; 
      } 
    } 
    function unread_msg_count() 
    { 
    return $this->count; 
    } 
+0

ありがとうございました。私は軽微な変更を加えなければなりませんでしたが、 'return $ query-> num_rows()'と 'return false'は正しい方向に私を設定しました。 – Ciprian

+0

私のすべてのモデルは、私のdb結果を返すか、またはfalseを返します。私のコントローラでは、私はいつもそのチェックを使用します。 – Catfish

+0

非常にクールです。あなたは私をたくさん助けました。ありがとう。 – Ciprian

関連する問題