Codeigniter框架的新手。我试图简单地从数据库中读取用户信息,并在视图中的表中显示结果。 (我的网站上有6页,每页都要显示一些用户数据)
默认控制器:
class Pages extends CI_Controller {
public function view($page = 'home') {
$this->load->helper('url');
$this->load->view('templates/header');
$this->load->view('pages/' . $page);
}
public function getUsers(){
$data= array();
$this->load->model('model_users');
$data['users'] = $this->model_users->getUsers1();
$this->load->view('pages/view_users', $data);
}
}
型号:
class Model_users extends CI_Model {
function __construct() {
parent::__construct();
}
function getUsers1(){
$query = $this->db->query('SELECT * FROM user');
if($query->num_rows()>0){
return $query->result();
} else {
return NULL;
}
}
}
查看:
<table>
<tr>
<td><strong>user ID</strong></td>
</tr>
<?php foreach ($users as $user) { ?>
<tr>
<td><?php echo $user->id; ?></td>
</tr>
<?php } ?>
</table>
错误:
Severity: Notice
Message: Undefined variable: users
Filename: pages/view_users.php
有关此错误发生原因及解决方法的任何建议?
答案 0 :(得分:2)
请将此代码放入控制器:
$this->load->view('pages/view_users',$data);
答案 1 :(得分:2)
无法发表评论:/
您收到错误是因为您直接从浏览器地址栏访问视图文件:
localhost/projectname/page/view_users
请访问您的控制器的操作,如下所示:
localhost/projectname/page/getUsers
您还应该阅读有关路线的信息
答案 2 :(得分:1)
你的代码是对的。但是,如果您的查询返回空结果,那么此处$users
变为NULL
,因此它会在视图上出错。将if
放在foreach
之前。见下面的代码
<table>
<tr>
<td><strong>user ID</strong></td>
</tr>
<?php
if(!empty($users)){ foreach ($users as $user) { ?>
<tr>
<td><?php echo $user->id; ?></td>
</tr>
<?php }}else{ ?>
<tr>
<td>No record found</td>
</tr>
<?php } ?>
</table>
在模型上
class Model_users extends CI_Model {
function __construct() {
parent::__construct();
}
function getUsers1(){
$query = $this->db->query('SELECT * FROM user');
if($query->num_rows()>0){
return $query->result();
} else {
return [];
}
}
}
答案 3 :(得分:0)
那么,
你可以这样做:
public function getUsers(){
$this->load->model('model_users');
$users = $this->model_users->getUsers1();
$this->load->view('pages/view_users', compact('users');
}
Compact更干净,如果将来需要改变,将很容易。
访问您的网页:localhost / your_site / getusers
但是,如果您想使用此标准,请使用Routes。因为URL中的“getusers”并不漂亮。
答案 4 :(得分:0)
首先尝试你的数组是否给出任何结果。
public function getUsers(){
$this->load->model('model_users');
$data['users'] = $this->model_users->getUsers1();
print_r($data['users']);
}