无法将数据库结果传递给我在 Codeigniter 中的视图


Cant pass database results to my view in Codeigniter

我正在学习Codeigniter,我想在我的视图中将数据库中的数据显示到数据表。

我不知道该怎么办,我试图将数据库中的数据显示在视图中的表中(使用数据表)。

这是我的模型:

function get_all_tagihan(){
        return $this->db->query("
            SELECT * FROM tagihan
            WHERE tagihan.TAGIHAN_ISDELETED=0
            ORDER BY tagihan.TAGIHAN_ID;
        ");
    }

这是我的控制器:

public function gettagihan(){
        $this->load->model('model_tagihan');
        $res=$this->model_tagihan->get_all_tagihan();
        $data_tagihan['tagihan']=$res;
        $this->load->view('monitoring/kosong', $data_tagihan);
    }

这是我的观点:

<table id="table1" class="table striped hovered cell-hovered border bordered" width="100%">
        <thead>
        <tr valign="middle">
            <td><b>Tarif</b></td>
            <td><b>No. Meter Panel</b></td>
            <td><b>Periode</b></td>
            <td><b>Nama</b></td>
            <td><b>Alamat</b></td>
            <td><b>Unitup</b></td>
            <td><b>Jenis Tarif</b></td>
            <td><b>Daya</b></td>
            <td><b>Nominal PLN</b></td>
            <td><b>Batas Atas</b></td>
            <td><b>Hasil Audit</b></td>
        </tr>
        </thead>

        <?php
        echo"<tbody>";
        if (isset($data_tagihan)){
        foreach ($tagihan as $key) {
            echo"<tr><td>".$key->TARIF_ID."</td>";
            echo"<td>".$key->PANEL_ID."</td>";
            echo"<td>".$key->TAGIHAN_PERIODE."</td>";
            echo"<td>".$key->TAGIHAN_NAMA."</td>";
            echo"<td>".$key->TAGIHAN_ALAMAT."</td>";
            echo"<td>".$key->TAGIHAN_UNITUP."</td>";
            echo"<td>".$key->TAGIHAN_JENISTARIF."</td>";
            echo"<td>".$key->TAGIHAN_DAYA."</td>";
            echo"<td>".$key->TAGIHAN_NOMINALPLN."</td>";
            echo"<td>".$key->TAGIHAN_BATASATAS."</td>";
            echo"<td>".$key->HASILAUDIT_ID."</td></tr>";
        }
        }
        ?>
        </tbody>
    </table>

显示了数据表,没有显示错误,但是为什么它一直说"表中没有可用数据"?我的数据库中已经有一些数据。

我不知道。你们对我应该做什么有什么建议吗?感谢您的任何帮助!

构建查询后忘记使用result()。请记住,这应该在您的模型方法中,因为$q->result()是数据层的一部分:

public function get_all_tagihan(){
    $q = $this->db->query("
                SELECT * FROM tagihan
                WHERE tagihan.TAGIHAN_ISDELETED=0
                ORDER BY tagihan.TAGIHAN_ID;
            ");
    return $q->result();
}

来源:在代码点火器 3 中生成查询结果

更新:

你的观点也有问题(如@blacmoon所述):

每次将数据发送到视图时,您都可以通过控制器分配数组并将其传递给视图来实现。执行此操作时,会将所有数组元素作为变量发送到视图。换句话说,在您的视图中,只有数组的元素被转换为变量数组的实际名称永远不会传递。例如:

如果您的控制器如下所示:

function test()
{
    $data = array(
        "parent_name" => "John",
        "parent_age" => 52,
        "children" => array(
            array(
                "name" => "Jane",
                "age" => 22,
            )
        )
    );
    $this->load->view('test', $data);
}

您的视图将仅接收以下变量:

$parent_name = "John";
$parent_age = 52;
$parent_children = array(
    array(
        "name" => "Jane",
        "age" => 22,
    )
);

如您所见,变量$data永远不会传递,因此在视图中不存在。

在您的情况下,您可以按以下方式设置数组$data_tagihan

$res = $this->model_tagihan->get_all_tagihan();
$data_tagihan['tagihan'] = $res;
$this->load->view('monitoring/kosong', $data_tagihan);

然后在您的视图中检查它,如下所示:

 if (isset($data_tagihan)){

这是错误的,因为$data_tagihan永远不会存在。然而,$tagihan确实存在。因此,您的条件应该是这样的:

 //empty() is best used because it checks if its set, and if it has contents
 if (!empty($tagihan)){

希望这有帮助。

在你的模型中....

function get_all_tagihan()
{
    return $this->db->query("SELECT * FROM tagihan WHERE tagihan.TAGIHAN_ISDELETED = 0 ORDER BY tagihan.TAGIHAN_ID;")->result();
}

终于映入眼帘...

if (count($tagihan) > 0 )
{
    foreach ($tagihan as $key) 
    {
        echo"<tr><td>".$key->TARIF_ID."</td>";
        echo"<td>".$key->PANEL_ID."</td>";
        echo"<td>".$key->TAGIHAN_PERIODE."</td>";
        echo"<td>".$key->TAGIHAN_NAMA."</td>";
        echo"<td>".$key->TAGIHAN_ALAMAT."</td>";
        echo"<td>".$key->TAGIHAN_UNITUP."</td>";
        echo"<td>".$key->TAGIHAN_JENISTARIF."</td>";
        echo"<td>".$key->TAGIHAN_DAYA."</td>";
        echo"<td>".$key->TAGIHAN_NOMINALPLN."</td>";
        echo"<td>".$key->TAGIHAN_BATASATAS."</td>";
        echo"<td>".$key->HASILAUDIT_ID."</td></tr>";
    }
}
else
{
    echo "no data in table";
}