簡體   English   中英

無法從控制器發送數據以在codeIgniter項目中查看

[英]can't send data from controller to view in a codeIgniter project

我正在嘗試將數據從控制器發送到視圖。 我是這樣做的:在控制器中:

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');
                     }

在控制器中回顯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>";
                               }

但是在“項目”下拉列表中沒有顯示任何內容。我在做什么錯? 有人可以幫我嗎?

mysql_query()返回一個資源 ,您將其交給$this->load->view(); 作為第二個參數。 如果深入研究底層CodeIgniter源,您會發現CodeIgniter不知道如何將Resource作為此參數來處理-僅數組和對象。

請不要使用mysql_query()及其朋友。 根據PHP官方文檔

不鼓勵使用此擴展名。 相反,應使用MySQLi或PDO_MySQL擴展。

更為重要的是,如果在PHP上使用CodeIgniter,則將數據庫類Active Record類結合使用以執行數據庫查詢。 地獄,甚至使用Datamapper ORM-請不要使用mysql_query()或朋友。

我像這樣更改了foreach並且它起作用了:

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

謝謝您的回答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM