如果在Codeigniter中为null,则foreach()期望无法显示数据

时间:2016-03-24 09:43:44

标签: php codeigniter

当我的查询返回空值时,我期待视图显示消息'找不到数据'但是我收到错误消息:为foreach()提供的参数无效

这是控制器代码:

public function index()
    {
        $ctki = $this->ctki_model->get_all_ctki_data();
        if ( !empty($ctki) ) {
            $this->data['ctkiData'] = $ctki;
        } else {
            $this->data['ctkiData'] = 'Tidak ada data CTKI.';
        }
        $this->load->view($this->layout, $this->data);
    }

这是视图代码:

<table class="table table-striped table-bordered table-hover table-condensed">
                <thead>
                <tr>
                    <th>No</th>
                    <th>Nama Lengkap</th>
                    <th>Jenis Kelamin</th>
                    <th>No KTP</th>
                    <th>No Passport</th>
                    <th>Kota</th>
                    <th>No Telepon</th>
                    <th>No HP</th>
                    <th>Aksi</th>
                </tr>
                </thead>
                <tbody>
                <?php foreach($ctkiData as $row): ?>
                    <?php
                    // Link edit, hapus, cetak
                    $link_edit = anchor('program/administrasi/edit/'.$row->ID_CTKI, '<span class="glyphicon glyphicon-edit"></span>', array('title' => 'Edit'));
                    $link_hapus = anchor('program/administrasi/hapus/'.$row->ID_CTKI,'<span class="glyphicon glyphicon-trash"></span>', array('title' => 'Hapus', 'data-confirm' => 'Anda yakin akan menghapus data ini?'));
                    ?>
                    <tr>
                        <td><?php echo ++$no ?></td>
                        <td><?php echo $row->Username ?></td>
                        <td><?php echo $row->Nama_Lengkap_User ?></td>
                        <td><?php echo $row->No_Telepon ?></td>
                        <td><?php echo $row->No_HP ?></td>
                        <td><?php echo $row->Level ?></td>
                        <td><?php echo format_is_blokir($row->Status_Blokir) ?></td>
                        <td><?php echo $link_edit.'&nbsp;&nbsp;&nbsp;&nbsp;'.$link_hapus ?></td>
                    </tr>
                <?php endforeach ?>
                </tbody>
            </table>

1 个答案:

答案 0 :(得分:0)

$this->data['ctkiData'] = 'Tidak ada data CTKI.';

为此变量指定一个字符串。在您的模板中,您希望它是一个数组。

您可以通过不同方式解决此问题,例如,通过检入模板,数据是否为数组以及是否有任何项目。如果没有显示错误。

<?php 
if (is_array($ctkiData) && count($ctkiData) > 0) {
foreach($ctkiData as $row): ?>
table here
<?php endforeach } else { ?>
error message here
<?php } ?>

(未经测试,但有类似的东西)。

更好的解决方案是使用像Twig这样的模板引擎,而不是在你的html模板中使用php代码。