开发者

echoing in the view page

I'm trying to echo a field of my database in the view, but I'm getting the error:

Message: Trying to get property of non-object

Filename: views/admin_view_report.php

Line Number: 7

When I echo the whole array, it works just fine. I can't find what's wrong.

Part of my controller:

function index(){
    $this->load->model('viewreport');
    $data['records']=$this->viewreport->getAllByChk();
    $this->load->view('admin_view_report',$data); 
}

Part of my model:

function getAllByChk(){
    $q = $this->db->get('info');
    if ($q->num_rows()>0){
        foreach ($q->result_array() as $row)
        {
            $data[]=$row;
        }
        return $data;
    }
}

The view:

<?php  foreach($records as $row):?>

    <?php echo $row-开发者_高级运维>subject; ?>

<?php endforeach;?>

If I only print data['records'] it gives the following output

Array
(
    [0] => Array
        (
            [id] => 1
            [address] => 11/siddeshwari
            [area] => sid
            [lat] => 21
            [lng] => 21
            [subject] => hello
            [problem] => lots of problem
            [image] => 
            [time] => 2011-08-11 23:49:29
            [register_id] => 1
            [category_id] => 1
            [city_city_id] => 1
            [status_status_id] => 0
        )

    [1] => Array
        (
            [id] => 2
            [address] => 134 banani
            [area] => banai
            [lat] => 1223
            [lng] => 2133
            [subject] => not working
            [problem] => yesproblem problem problem
            [image] => 
            [time] => 2011-08-12 01:09:44
            [register_id] => 1
            [category_id] => 2
            [city_city_id] => 1
            [status_status_id] => 0
        )

)

but when I try to print the problem or subject only it gives the error.


result_array() returns you an array of arrays, not of objects.

In your view:

$row->subject

should be:

$row['subject']

If you want $row to be an object, change result_array() to result(). This will give you an array of objects.

Also foreach ($q->result_array() as $row) is redundant.

It's just copying $q->result_array() to $data.

You don't need to do that, just return $q->result_array();.


I would do the following

function getAllByChk()
{
    $q = $this->db->get('info');
    if ($q->num_rows() > 0)
    {
        return $data->result();
    }
    return false;
 }

then in the view

if($records) :
    foreach($records as $row) :
      print_r($row);
    endforeach;
else:
    echo 'No Records';
endif;


function getAllByChk(){
    $data = array();
    //remove if

Also, fetch result either as object $q->result() or echo $row['subject']


Also you can return the result()

          function getAllByChk(){

$q = $this->db->get('info');
        if ($q->num_rows()>0){
         foreach ($q->result_array() as $row)
          {
           $data[]=$row;

             }
         return $data->result();
          }
             }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜