我正在学习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";
}