我无法显示它所说的数据未定义的变量:avg 。这是我的剧本:
我的控制员:
public function rate_config() {
$rt = $_POST['hasil_rating'];
$content["hasil_rating"] = $rt;
$this->db->insert("tb_rating", $content);
redirect("rate/index?status=tambah_success","refresh");
$data['avg'] = $this->db->select_avg("hasil_rating")
->get("tb_rating");
$this->load->view('rating', $data);
}
和视图:
<form method="post" action="<?php echo base_url('rate/rate_config');?>" enctype="multipart/form-data">
<input class="rating" name="hasil_rating" data-stars="5" data-step="0.5">
<div class="form-group" style="margin-top:10px">
<button type="submit" class="btn btn-success">RATE</button>
</div>
<div>
</form>
<label class="label label-primary"><?=$avg['hasil_rating']?></label>
</div>
<hr>
$ avg ['hasil_rating'] 用于显示 $ data ['avg'] 中的数据
我应该使用模特吗?我不使用模型,因为它会节省很多时间。谢谢你。
答案 0 :(得分:0)
在您的代码中:
public function rate_config() {
$rt = $_POST['hasil_rating'];
$content["hasil_rating"] = $rt;
$this->db->insert("tb_rating", $content);
/*==================Here====================*/
redirect("rate/index?status=tambah_success","refresh");
$data['avg'] = $this->db->select_avg("hasil_rating")
->get("tb_rating");
$this->load->view('rating', $data);
}
你在php获取$ data ['avg']之前已经重定向。尝试删除该重定向并查看。
答案 1 :(得分:0)
给你一个建议。
您应该使用model来执行与数据库相关的活动,否则使用codeigniter框架是没有意义的,当您使用codeigniter时,请尝试使用其最大功能。
您应该查看一次文档以获取更多详细信息。(https://www.codeigniter.com/user_guide/)
通过查看代码,我注意到您忘记了获取结果。 result_array()用于以数组格式提取多行。
$data['avg'] = $this->db->select_avg("hasil_rating")->get("tb_rating")->result_array();
用于显示
echo $avg[0]['hasil_rating'];
如果是单行,那么应该使用 row(),它会将结果作为对象
$data['avg'] = $this->db->select_avg("hasil_rating")->get("tb_rating")->row();
用于显示
echo $avg->hasil_rating;
答案 2 :(得分:0)
首先,您无法将数据发送到视图中,因为重定向是在发送数据之前执行的。
其次,要从数据库中获取结果,您应该阅读:
https://www.codeigniter.com/user_guide/database/results.html?highlight=result
在那里,您可以通过示例获得清晰的概念。
因此,如果您想获取单个结果行,请使用
appearance
例如,
row() // it returns an object.
row_array // it returns an array
删除或取消注释此行。
$data['avg'] = $this->db->select_avg("hasil_rating")
->get("tb_rating")->row_array();