2011-08-12 7 views
1

私は、ビューの私のデータベースのフィールドをエコーし​​ようとしているが、私はエラーを取得しています:ビューページにエコー

Message: Trying to get property of non-object

Filename: views/admin_view_report.php

Line Number: 7

私は配列全体をエコーすると、それだけで正常に動作します。何が間違っているのか分かりません。私のコントローラの

パート:私のモデルの

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

パート:

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

ビュー:

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

    <?php echo $row->subject; ?> 

<?php endforeach;?> 

私はそれが次の出力を与えるdata['records']を印刷する場合

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 
     ) 

) 

ただし、問題または対象を印刷しようとすると、エラーが発生します。

+0

<?php echo $ row-> subjectを変更できますか? ?><?php print_r($ row); ?>と出力を表示する? – mattumotu

+0

出力は上記の通りです – tan

答えて

2

result_array()は、オブジェクトではなく配列の配列を返します。あなたのビューで

$row->subject 

は次のようになります。

$row['subject'] 

あなたは$行は、オブジェクトであるresult()result_array()を変更したい場合は

。これにより、オブジェクトの配列が得られます。

foreach ($q->result_array() as $row)も冗長です。

​​から$dataにコピーしています。

これを行う必要はありません。ちょうどreturn $q->result_array();です。

+0

それはうまくいきます:)あなたは歓迎です:-) – tan

+0

@tan: –

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

また、いずれかの私はどうなる

  function getAllByChk(){ 

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

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

あなたが結果を返すことができます()のように

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

で次の結果フェッチビュー

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

これは実際には間違っています! $ dataはコードごとの配列なので、 '$ q-> result()'でなければならず、とにかく役に立たない 'foreach'を持たないようにする必要があります。 – dakdad

+0

'$ data'は配列なので' result() '関数はありません。 '$ q-> result()'を返したいとします。 –

1

オブジェクト$q->result()あるいはまたecho $row['subject']

関連する問題