Is there a better way of retrieving the number of rows from a table? Currently I have this which is also returning an error if there are no results:
Error:
<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":""}
Controller
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();
}
}
Model:
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();
Try this:
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();
}
}
Model:
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;
}