2011-01-27 118 views
2

嗨我有一個問題讓視圖顯示以下代碼的任何結果。CodeIgniter將查詢傳遞給查詢

控制器:

$datedue = 2011-01-27; 
    $username = $this->tank_auth->get_username(); 
    $sql = "SELECT taskid FROM relationships WHERE username = ? AND datedue = ?"; 
    $tasks = $this->db->query($sql, array($username, $datedue)); 
    $count = 0; 
     $taskdetails = array(); 

    foreach($tasks->result() as $row) 
    { 

    $taskid = $row->taskid; 

    $subsql = "SELECT * FROM tasks WHERE id = ?"; 
    $taskdetails[$count] = $this->db->query($subsql, array($taskid)); 
    $count++; 
    } 

    $data['taskdetails'] = $taskdetails; 
    $data['total'] = $count; 

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

查看:

<?php 

foreach($taskdetails as $entry) 
    { 
    foreach($entry->result() as $row) 
    { 
    echo $row->name; 
    } 

    } 

?> 

任何幫助將是不錯的感謝。

+0

你得到任何輸出,或完全空白頁? – MrGlass 2011-01-27 00:18:41

+0

我的頭顯示,但不是儀表板視圖 – Jason 2011-01-27 00:41:13

回答

5

您的視圖不顯示的原因是因爲您的查詢不完全正確。

$datedue = 2011-01-27; 

應該用引號引起來,因爲日期是一個字符串。

$datedue = "2011-01-27"; 

此外,你不正確地遵循MVC的概念。所有的數據庫查詢和結果都應該在模型內部進行。 Controller中的所有數據處理。

控制器和視圖都不應該處理任何數據庫連接,這是模型的職責。因此,我建議創建一個模型,並將所有數據庫查詢放在一個或兩個函數中。控制器然後會調用這些函數並接收數據。那麼它應該操縱它和它在一個乾淨的事傳遞給視圖(我的意思是,該視圖應該調用result()

這裏是你如何是代碼的結構應:

控制器

class Tasks extends Controller { 

function Tasks() 
{ 
    parent::Controller(); 
    $this->load->model('tasks_model'); 
    $this->load->database(); 
} 

function index() 
{ 
    $datedue = "2011-01-27"; 
    $username = $this->tank_auth->get_username(); 

    $tasks = $this->tasks_model->getTasks($username, $datedue); 


    $count = count($tasks); 


    $data['taskdetails'] = $tasks; 
    $data['total'] = $count; 

    $this->header(); 
    $this->load->view('dashboard', $data); 
} 
} 

MODEL

class Tasks_model extends Model { 


    function Tasks_model() 
    { 
     // Call the Model constructor 
     parent::Model(); 
    } 

    function getTasks($username, $datedue) { 
     $sql = "SELECT taskid FROM relationships WHERE username = ? AND datedue = ?"; 
     $tasks = $this->db->query($sql, array($username, $datedue)); 

     $taskdetails = array(); 

     foreach($tasks->result() as $row){ 

      $taskid = $row->taskid; 

      array_push($taskdetails, $this->getTasksDetails($taskid)); 
     } 

     return $taskdetails; 
    } 

    function getTasksDetails($taskid) { 

     $subsql = "SELECT * FROM tasks WHERE id = ?"; 
     $taskdetails = $this->db->query($subsql, array($taskid)); 

     return $taskdetails->row(); 


    } 


} 

VIEW:

foreach($taskdetails as $task) 
    { 
    echo $task->name; 
    } 
0

驗證您的任務表,包含名稱字段

視圖

foreach($taskdetails as $entry) 
{ 
    foreach($entry->result() as $row) 
    { 
     echo $row[0]; 
    } 

} 

爲什麼你逝去的數組中此行

$ taskdetails [$計數= $這個 - > db-> query($ subsql,array($ taskid));

代替寫

$ taskdetails [$計數] = $這個 - > DB->查詢($ subsql,$的taskid);