2013-08-20 43 views
0

我有一個顯示所有學生配置文件及其結果的頁面。所有用戶信息我放在表「用戶」 ,然後我有另一個表「結果」,顯示所有學生他們從不同課程的分數。事情是我不知道如何編寫查詢或控制器功能來鏈接學生與他們相應的結果。我在這裏需要一些幫助的感謝無法將用戶鏈接到其相應的結果CODEIGNITER

控制器

 function students() 
     { 
      $data = array(); 
      $this->load->model('kdg_model'); 
      $query = $this->kdg_model->get_students(); 
      $query2 = $this->kdg_model->get_resultStudent(); 
       if ($query) 
       { 
        $data['user'] = $query; 
        $data['results'] = $query2; 
       } 

       $this->load->view('students_view',$data); 

     } 

型號

get_students從數據庫表中的用戶的所有行。 get_resultstudent從結果中獲取所有行。試圖將它們結合起來,但它只是給我所有相同的行回到每個配置文件。

  function get_students(){ 
      $this->db->where('admin', 0); 
      $query = $this->db->get('user'); 
      return $query->result(); 
     } 
     function get_resultStudent(){ 
      $this->db->select('*'); 
      $this->db->from('results'); 
      $this->db->join('user', 'user.id_user = results.FK_student'); 
      $query = $this->db->get(); 
      return $query->result(); 
     } 
+0

codeigniter not codeignitor lol – sbaaaang

回答

0

我不確定你的數據庫模式是什麼樣的,但是從我的工作中我可以得到這個。好吧,在你的控制器中,你想建立你的學生陣列。通過調用兩個模型函數來做到這一點。我們要調用的第一個模型函數讓我們看到'用戶'表中的所有學生。該模型將傳回一個數組到控制器,我們可以循環獲取各個學生。在循環的每次迭代中,我們可以將'id_user'傳遞給我們模型中的另一個函數,以獲得該學生的結果。

//This is where we will store the students and their results 
$aData['aStudentResults'] = array(); 

//Load the model we need 
$this->load->model('kdg_model'); 

//Get an array of students 
$aStudents = $this->kdg_model->get_students(); 

//Now we have an array of student id's let loop through these and for each student 
//let get their results 
foreach($aStudents as $student) 
{ 
    //Add the student to the array 
    //The student id (id_user) is the key 
    $aData['aStudentResults'][$student->id_user] = $this->kdg_model->get_resultStudent($student->id_user); 
} 

//Pass out array of students to the view 
$this->load->view('students_view', $aData); 

這些都是我們呼籲在控制器

//Get all the students that are not admins 
function get_students(){ 
    $this->select('id_user') 
     -from('user') 
     ->where('admin', 0); 
    $query = $this->db->get(); 
    return $query->result(); 
} 

//Use the id_user we were passed by the controller to get the results 
function get_resultStudent($id_user){ 
    $this->db->select('*'); 
    $this->db->from('results'); 
    $this->db->where('FK_student', $id_user); 
    $query = $this->db->get(); 
    return $query->result_array(); 
} 

在這一點上,我們現在有我們需要的所有數據模型的功能。我們只需要將它從控制權傳遞給我們通過傳遞視圖$ aData所做的視圖。在我們看來,我們可以訪問我們傳遞給它像這樣

<? foreach($aStudentResults as $studentId => $aResults): ?> 
    <p>Student id: <?= $studentId ?></p> 

    <?foreach($aResults as $aResult): ?> 
     //Do something with results 
    <? endforeach; ?> 
<? endforeach; ?> 

這尚未測試,因此可能有一些語法錯誤,但希望你應該得到的是什麼,我試圖做一個想法,你什麼需要做。

瞭解MVC的工作原理非常重要。在模型中練習數據庫中的選定數據,然後通過控制器將該數據傳遞給您的視圖。你會很快掌握它的。

如果有什麼你不明白在這個答案,請留下評論,讓我知道。

+0

感謝您的快速回復,現在當您調用get_resultStudent()時,有幾件事情不應該在()之間存在一個參數當您加載視圖不是$ adata我必須設置爲變量? – user2696666

+0

@ user2696666是的,我的壞,改變 – Pattle

+0

@ user2696666不,你沒有在視圖中引用$ aData。如果您通過$ aData ['value1'],您只需在視圖 – Pattle

相關問題