在视图文件Codeigniter中显示数据时出现问题

时间:2019-06-20 18:23:38

标签: php codeigniter codeigniter-3

我对Codeigniter有问题。我无法在视图文件中显示数据。下面给出的是我的模型,控制器和视图文件的代码。我还附上了错误的屏幕截图,以使您更加清楚。

模型

public function get_projects ($userid = '')
 {
   if (empty($userid)){
     return FALSE;
   }
        $this->db->select('*');
        $this->db->from('projects');
        $this->db->where('userid', $userid);
        $query = $this->db->get();

   return $query->row_array();                 
 }

控制器

$uid = $this->session->userdata('user_id');

        $data['details']= $this->projects->get_projects($uid);
        $this->load->view('design/header', $data);
        $this->load->view('design/nav', $data);
        $this->load->view('content/dashboard', $data);
        $this->load->view('design/footer', $data);

查看

<div class="col-6">
            <?php foreach ($details as $row){ echo $row->id; } ?>
        </div>

错误

enter image description here

3 个答案:

答案 0 :(得分:1)

首先,听起来像您在使用对象表示法$row->id而不是$row['id']时想要一个 object 。这意味着您需要使用row()。这也意味着,由于您将获得1个结果,因此不需要foreach

型号:

public function get_project($userid) {
   $q = $this->db->get_where('projects', array('userid', $userid));
   if ($q->num_rows() !== 1) {
       return false;
   }
   return $q->row();                 
 }

控制器:

$uid = $this->session->userdata('user_id');
if (empty($uid)) {
    show_error('user id not set'); // we probably shouldn't have gotten this far
}
$project = $this->projects->get_project($uid);
if ($project === FALSE) {
    show_error("no rows in project table for user with id: $uid");
}
$data['details'] = $project;
$this->load->view('design/header', $data);
$this->load->view('design/nav', $data);
$this->load->view('content/dashboard', $data);
$this->load->view('design/footer', $data);

查看:

<p><?php echo $details->id; ?></p>
<p><?php echo $details->someothervar; ?></p>

尽管此代码可能无法解决您的问题(我猜没有为具有该ID的用户提供任何项目,或者会话uid的设置不正确),它将帮助您调试内容,并且很好练习总是检查num_rows(),并且变量正在输出您期望的值。我倾向于将所有这些检查全部保留在控制器中。

答案 1 :(得分:1)

这里的问题是模型函数的返回: output.stdout仅返回1个数组(或inventory_hostname也仅返回1个对象)。在视图中迭代时。

不确定您的目的,但是您可以通过或来解决此问题:

  • 请勿在视图中使用迭代,只需使用变量return $query->row_array();
  • 将您的return $query->row();更改为$details->id

答案 2 :(得分:0)

在您的视图页面中,将$row->id;更改为$row['id']将会生成结果

<div class="col-6">
            <?php foreach ($details as $row){ echo $row['id']; } ?>
 </div>