2012-03-07 2 views
1

Есть ли лучший способ получить количество строк из таблицы? В настоящее время у меня есть это, который также возвращается ошибка, если нет результатов:Как правильно получить num_rows | Codeigniter

Ошибка: 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 file:

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

Смежные вопросы