简体   繁体   中英

Error Undefined variable: result + Error Invalid argument supplied for foreach() in CodeIgniter 2

Hi I was trying to place the foreach block in my view but i encountered 2 errors here :

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: result

and

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Here is my view :

<?php foreach($result as $data_barang):?>
 <tr>
  <td><?php echo $data_barang->barang.kode_item;?></td>
  <td><?php echo $data_barang->nama_item;?></td>
  <td><?php echo $data_barang->nama_ruang;?></td>
  <td><?php echo $data_barang->jml_item_kondisi;?></td>
  <td><?php echo $data_barang->kondisi;?></td>
 </tr>
<?php endforeach;?>

For addition i'll place the model and the controller here if it's needed :

controller :

public function index(){
    // load data barang yg akan ditampilkan
    $data['result']=$this->admin_model->get_data_table()->result_array();

    // load view
    $this->load->view('dashboard_admin');
}

*note : i also have tried with ->result()

model :

function get_data_table(){
    $query_result = $this->db->query('SELECT barang.kode_item, nama_item, nama_ruang, jml_item_kondisi, kondisi 
        FROM barang 
        INNER JOIN info_barang ON barang.kode_item = info_barang.kode_item 
        INNER JOIN (
            SELECT ruang.nama_ruang, campur_table.kode_item 
            FROM ruang 
            INNER JOIN rekap_isi_ruang AS campur_table ON campur_table.nomor_ruang = ruang.nomor_ruang) AS barang_campur 
        ON barang.kode_item = barang_campur.kode_item');
    return $query_result;
}

I've tried this and this but still doesn't resolve my problems.

By the way, i'm sorry if there's any words that doesn't look familiar to you. Thanks

Try this

public function index(){
    // load data barang yg akan ditampilkan
    $data['result']=$this->admin_model->get_data_table()->result_array();

    // load view
    $this->load->view('dashboard_admin',$data);
}

try this:: // Controller

  public function index(){

        $data['result']=$this->admin_model->get_data_table()->result_array();


        $this->load->view('dashboard_admin',$data);
    }

// View

<?php
 if(!empty(result)) {
 foreach($result as $data_barang):?>
 <tr>
  <td><?php echo $data_barang->barang.kode_item;?></td>
  <td><?php echo $data_barang->nama_item;?></td>
  <td><?php echo $data_barang->nama_ruang;?></td>
  <td><?php echo $data_barang->jml_item_kondisi;?></td>
  <td><?php echo $data_barang->kondisi;?></td>
 </tr>
<?php

 endforeach;
} else { ?>
<tr>
  <td colspan="5">Some message here</td>
 </tr>

Problem In Controller

You Store Data in $data['result'] variable but you not pass to View $data variable so you pass $data variable in controller like this in controller

public function index(){
// load data barang yg akan ditampilkan
$data['result']=$this->admin_model->get_data_table()->result_array();

// load view
$this->load->view('dashboard_admin',$data);
}

this work fine

Change your model into this

function get_data_table(){
    $query_result = $this->db->query('SELECT barang.kode_item, nama_item, nama_ruang, jml_item_kondisi, kondisi 
        FROM barang 
        INNER JOIN info_barang ON barang.kode_item = info_barang.kode_item 
        INNER JOIN (
            SELECT ruang.nama_ruang, campur_table.kode_item 
            FROM ruang 
            INNER JOIN rekap_isi_ruang AS campur_table ON campur_table.nomor_ruang = ruang.nomor_ruang) AS barang_campur 
        ON barang.kode_item = barang_campur.kode_item')->result();
    return $query_result;
}

If you want array use result_array() instead of query()->result();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM