无法在视图codeigniter中显示查询结果

sd2nnvve  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(347)

我尝试在动态表中显示数据库的结果,我使用codeigniter:
这是我的模型:

class Cliente_model extends CI_Model {

function __construct() {
    parent::__construct();
}

public function obtenerDatos() {

    $data = $this->db->get('cliente');
    return $data;
}

这是我的控制器:

class Cliente extends CI_Controller {

public function __construct()
    {
            parent::__construct();
            $this->load->model('cliente_model');
    }

public function index()
    {   
        $tabla = $this->cliente_model->obtenerDatos();
        $data = $tabla->result_array();
        print_r($data); //This works
        $this->load->view('cliente_view',$data);
    }
}

这是我观点中的表格部分:

<table class="table table-sm table-striped table-bordered table-hover">
    <thead class="thead-dark">
        <tr>
            <th scope="col">Cliente</th>
            <th hidden scope="col">ID</th>
            <th scope="col">Correo 1</th>
            <th scope="col">Correo 2</th>
            <th scope="col">Correo 3</th>
            <th scope="col">Correo 4</th>
            <th scope="col">Correo 5</th>
            <th scope="col">Correo 6</th>
            <th scope="col">Correo 7</th>
            <th scope="col">Correo 8</th>
            <th scope="col">Status</th>
            <th scope="col">Acción</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($data as $fila): ?>
        <tr>
            <th scope="row"><?php echo $fila['nombreCliente'];?></td>
            <td hidden><?php echo $fila['idCliente'];?></td>
            <td><?php echo $fila['correoCliente1'];?></td>
            <td><?php echo $fila['correoCliente2'];?></td>
            <td><?php echo $fila['correoCliente3'];?></td>
            <td><?php echo $fila['correoCliente4'];?></td>
            <td><?php echo $fila['correoCliente5'];?></td>
            <td><?php echo $fila['correoCliente6'];?></td>
            <td><?php echo $fila['correoCliente7'];?></td>
            <td><?php echo $fila['correoCliente8'];?></td>
            <?php if ($fila['statusCliente'] == 'Activo') { ?>
            <td><span class="badge badge-pill badge-success">Activo</span></td>
            <?php } else { ?>
            <td><span class="badge badge-pill badge-warning">Inactivo</span></td> 
            <?php } ?>             
            <td><a href="#" title=""><span class="badge badge-pill badge-warning">Editar </span><img src="../imagenes/glyphicons/png/glyphicons-151-edit.png" alt="" title=""></a></a></td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

当我在控制器中调用print\r函数时,$data变量会显示我要传递给视图的所有记录,但当我发送给视图时,foreach函数中会出现以下错误:
错误1:
遇到php错误
严重性:通知
消息:未定义变量:数据
文件名:views/cliente\u view.php
行号:44
回溯:
文件:c:\appserv\www\carilms\application\views\cliente\u view.php
线路:44
函数:\错误\处理程序
文件:c:\appserv\www\carilms\application\controllers\cliente.php
线路:17
功能:查看
文件:c:\appserv\www\carilms\index.php
线路:315
功能:需要一次
错误2:
遇到php错误
严重性:警告
消息:为foreach()提供的参数无效
文件名:views/cliente\u view.php
行号:44
回溯:
文件:c:\appserv\www\carilms\application\views\cliente\u view.php
线路:44
函数:\错误\处理程序
文件:c:\appserv\www\carilms\application\controllers\cliente.php
线路:17
功能:查看
文件:c:\appserv\www\carilms\index.php
线路:315
功能:需要一次
你知道他为什么不工作吗?

vsnjm48y

vsnjm48y1#

如果使用数据数组调用视图,则提供的数组需要是关联数组,该数组将变量名称用作键,并将其值用作变量值。例子:

//Controller
$data = [];
$data['var1'] = true;
$data['var2'] = 'This is a string value';
$this->load->view('cliente_view',$data);

现在,您可以调用变量了 $var1 以及 $var2 在你看来,因为这些是 data 数组

//View
if ($var1)
    echo $var2;
else
    echo 'false';

所以问题的解决方案是添加变量名 'data' 作为所提供阵列的密钥:

$data = ['data' => $data];
$this->load->view('cliente_view',$data);

之后,您可以使用变量 $data 在你看来。

5cg8jx4n

5cg8jx4n2#

在模型函数中写下:

$query = $this->db->get('cliente');
$data = $query->result_array();
return $data;

在你的控制器里:

$data['client']= $this->cliente_model->obtenerDatos();
$this->load->view('cliente_view',$data);

然后将此添加到视图中:

<?php if ($client): foreach($client as $fila):?>
<td><?php echo $fila['correoCliente1'];?></td>

等。。。
如你所见, $data['client'] 现在保存着您的数据库信息,您可以通过在视图中循环关联数组来读取它。有关查询生成器类的详细信息,请单击此处。

相关问题