0

我正在尝试将数据从我的控制器发送到视图。这是我的做法: 在控制器中:

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>";
                               }

但它在下拉列表“项目”中没有显示任何内容我做错了什么?有人可以帮我吗?

4

2 回答 2

0

mysql_query()返回一个资源,您将其$this->load->view();作为第二个参数传递给。如果你深入研究底层的 CodeIgniter 源码,你会发现 CodeIgniter 不知道如何处理资源作为这个参数——只有数组和对象。

请不要使用mysql_query()它的朋友。根据PHP 官方文档

不鼓励使用此扩展程序。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

更重要的是,如果您在 PHP 上使用 CodeIgniter,请结合使用数据库类和活动记录类来执行数据库查询。地狱,甚至使用Datamapper ORM - 请不要使用mysql_query()或朋友。

于 2012-10-01T17:39:20.393 回答
0

我像这样更改了 foreach 并且它起作用了:

foreach ($all_projects as $project)
    {
            echo  "<option value=".$project->id_projet.">".$project->titre."</option>";
                                    }

谢谢您的回答

于 2012-10-02T08:54:39.817 回答