简体   繁体   English

Codeigniter:模型foreach将数组传递给控制器​​->查看

[英]Codeigniter: model foreach pass array to controller -> to view

Here is my model - I want to assign the rows and echo out on the view page eg 这是我的模型-我想分配行并在视图页面上回显例如

My Model: 我的模特:

public function dsduan(){

       $data   =   array();
       $q = $this->db->query("SELECT duan.id, duan.tenduan, duan.diachi, quan.quan, duan.tdt, duan.mdxd, duan.tt, duan.cdt, duan.dvql, duan.dvtk, duan.dvtc, duan.dvgs, duan.loai, duan.tienich, duan.noidung, duan.hinhanh FROM duan LEFT JOIN quan ON duan.quan=quan.id ORDER BY duan.tenduan ASC");

        if ($q->num_rows == 1)
        { 
            foreach ($q->result() as $row)
            {                  
                $data[]['id'] = $row->id; 
                $data[]['tenduan'] = $row->tenduan;
                $data[]['diachi'] = $row->diachi;
                $data[]['quan'] = $row->quan;                   
            }
        }

        return $data; 
}


My Controller: 我的控制器:

public function dsduan() {

     $this->load->model('madmin');
     $duan = $this->madmin->dsduan();
     $this->load->view('danhsachduan', $duan);        
}


My View: 我的观点:

<td><?php echo $id; ?></td>
<td><?php echo $tenduan; ?></td>
<td><?php echo $diachi; ?></td>
<td><?php echo $quan; ?></td>

How do I properly pass my model array to my controller so that I can echo out on my view? 如何正确地将模型数组传递给控制器​​,以便可以在视图中回显? My view Error: 我的观点错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: id

Filename: views/danhsachduan.php

Line Number: 44

In your model you use two dimensional array: 在模型中,您使用二维数组:

$data[]['id'] = $row->id; $ data [] ['id'] = $ row-> id;

then in your controller you pass this array to view. 然后在您的控制器中传递此数组进行查看。

so if you want to access two dimensional array into your view, you have to use foreach loop. 因此,如果要在视图中访问二维数组,则必须使用foreach循环。

such as change your array in model like following: 例如更改模型中的数组,如下所示:

$data['id'][] = $row->id; $ data ['id'] [] = $ row-> id;

and in your view access array using: 并在您的视图访问数组中使用:

foreach($id as $res)
{
   echo $res;
}

Have modified your code. 修改您的代码。 Kindly replace below with your code. 请在下面用您的代码替换

Model: 模型:

public function dsduan()
{
     $q = $this->db->query("SELECT duan.id, duan.tenduan, duan.diachi, quan.quan, duan.tdt, duan.mdxd, duan.tt, duan.cdt, duan.dvql, duan.dvtk, duan.dvtc, duan.dvgs, duan.loai, duan.tienich, duan.noidung, duan.hinhanh FROM duan LEFT JOIN quan ON duan.quan=quan.id ORDER BY duan.tenduan ASC");

     if($q->num_rows() > 0)
         return $q->result();
     return false;
}


Controller: 控制器:

public function dsduan() 
{    
     $this->load->model('madmin');
     $data['duan'] = $this->madmin->dsduan();
     $this->load->view('danhsachduan', $data);        
}


View : 查看

<?php foreach($duan as $d) { ?>
    <td><?php echo $d->id; ?></td>
    <td><?php echo $d->tenduan; ?></td>
    <td><?php echo $d->diachi; ?></td>
    <td><?php echo $d->quan; ?></td>
<?php } ?>

In codeigniter, it use extract() method when binding variable from controller to view. 在codeigniter中,当将变量从控制器绑定到视图时,它将使用extract()方法。 In this case, you can do like this. 在这种情况下,您可以这样做。

In Model 在模型中

public function dsduan()
{

       $data   =   array();
       $q = $this->db->query("SELECT duan.id, duan.tenduan, duan.diachi, quan.quan, duan.tdt, duan.mdxd, duan.tt, duan.cdt, duan.dvql, duan.dvtk, duan.dvtc, duan.dvgs, duan.loai, duan.tienich, duan.noidung, duan.hinhanh FROM duan LEFT JOIN quan ON duan.quan=quan.id ORDER BY duan.tenduan ASC");

       if ($q->num_rows)
       {
            $data = $q->result_array();
       }

        return $data; 
}

In Controller 在控制器中

public function dsduan()
{
        $this->load->model('madmin');
        $data['duan'] = $this->madmin->dsduan();
        $this->load->view('danhsachduan', $data);

}

In View , if your array is multi-dimensional, you can use like this, 在View中 ,如果您的数组是多维的,则可以这样使用:

<?php foreach($duan as $d) { ?>
   <td><?php echo $d['id']; ?></td>
   <td><?php echo $d['tenduan']; ?></td>
   <td><?php echo $d['diachi']; ?></td>
   <td><?php echo $d['quan']; ?></td>
<?php } ?>

if your array is one-dimensional, you can use like this, 如果您的数组是一维的,则可以这样使用,

   <td><?php echo $duan['id']; ?></td>
   <td><?php echo $duan['tenduan']; ?></td>
   <td><?php echo $duan['diachi']; ?></td>
   <td><?php echo $duan['quan']; ?></td>

update your view like this 这样更新您的视图

<?php foreach($duan as $d) { ?>
    <td><?php echo $d['id']; ?></td>
    <td><?php echo $d['tenduan']; ?></td>
    <td><?php echo $d['diachi']; ?></td>
    <td><?php echo $d['quan']; ?></td>
<?php } ?>
public function dsduan(){

   $data   =   array();
   $q = $this->db->query("SELECT duan.id, duan.tenduan, duan.diachi, quan.quan, duan.tdt, duan.mdxd, duan.tt, duan.cdt, duan.dvql, duan.dvtk, duan.dvtc, duan.dvgs, duan.loai, duan.tienich, duan.noidung, duan.hinhanh FROM duan LEFT JOIN quan ON duan.quan=quan.id ORDER BY duan.tenduan ASC");

    if ($q->num_rows == 1)
    { 
        foreach ($q->result() as $row)
        {                  
            $data['id'] = $row->id; 
            $data['tenduan'] = $row->tenduan;
            $data['diachi'] = $row->diachi;
            $data['quan'] = $row->quan;                   
        }
    }

    return $data; 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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