我正在尝试将数据从我的控制器发送到视图。我是这样做的: 在控制器中:
function getAllProjects()
{
$where= array('id_user'=>$this->session->userdata('id_user'));
$result=$this->expenses_model->get_all('projets', $where);//get_all returns an array
echo json_encode ($result);
return $result;
}
function index (){
$data['all_projects']= $this->getAllProjects();
$this->session->set_userdata('id_user', 28);
$this->load->view('layout/public/header');
$this->load->view('content/public/profil/modules/expenses',$data);
$this->load->view('layout/public/footer');
}
echo json_encode $ data返回正确的结果)但是我不知道如何在视图中显示它。我试过:(在视图中)
<label><strong>Sur le projet</strong></label>
<select class="span4" id="projet" name="projet">
<?php
if (isset($all_projects) && ! empty($all_projects))
{ echo "there is some projects"; //is not printed
foreach ($all_projects as $project){
echo "<option value=".$project['id_projet'].">".$project['titre']."</option>"; }
else {
echo "<option value='0'>No projects</option>";
}
但它没有在下拉列表“项目”中显示任何内容 我做错了什么?有人可以帮我吗?
答案 0 :(得分:0)
mysql_query()
会返回资源,您将其作为第二个参数传递给$this->load->view();
。如果你深入了解底层的CodeIgniter源代码,你会发现CodeIgniter不知道如何处理Resources作为这个参数 - 只有Arrays和Objects。
请不要使用mysql_query()
和它的朋友。根据{{3}}:
不鼓励使用此扩展程序。相反,MySQLi或PDO_MySQL 应该使用扩展名。
更重要的是,如果您在PHP上使用CodeIgniter,请将PHP official documentation与Database Class结合使用来执行数据库查询。好吧,即使使用Active Record Class - 请不要使用mysql_query()
或朋友。
答案 1 :(得分:0)
我改变了这样的foreach并且它起作用了:
foreach ($all_projects as $project)
{
echo "<option value=".$project->id_projet.">".$project->titre."</option>";
}
感谢您的回答