2013-03-20 76 views
0

我有一個帶添加和編輯功能的窗體。在表單中,他們有複選框。複選框本身是從mysql表生成的。使用動態值填充動態複選框codeigniter

當我想要添加功能時,複選框正確填充。但是,當我輸入表單的編輯功能時,我有問題。

我需要複選框的值根據我提交時進行檢查。

這裏是我的代碼:

控制器:

public function edit($id) 
{ 
    $data['query'] = $this->Campaign_model->edit($id); 
    $data['branch_list'] = $this->Campaign_model->get_branch_list(); 
    $data['branch_checked'] = $this->Campaign_model->get_checked_branches($id); 

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

$data['branch_list']包含主複選框。 $data['branch_checked']包含在當前數據(查詢)中檢查哪個複選框。

查看:

$branch_id = ""; 

foreach($branch_list as $branch_list_checkbox) 
{ 
    if($branch_list_checkbox->id == $branch_checked->branch_id) 
    { 
     $branch_id .= '<label><input name="branch_id[]" type="checkbox" value="'.$branch_list_checkbox->id.'" checked />'.$branch_list_checkbox->name.'</label>&nbsp;'; 
    } 
    else 
    { 
     $branch_id .= '<label><input name="branch_id[]" type="checkbox" value="'.$branch_list_checkbox->id.'" />'.$branch_list_checkbox->name.'</label>&nbsp;'; 
    }   
} 

$branch_list一切都正確填充。但是,如何正確地將$branch_checked分配給各自的複選框?

需要幫助,謝謝。

+0

必須有一種方法來更好地優化您的查詢,並將檢查的狀態包括在分支列表中。 – 2013-03-21 05:03:42

回答

0

它看起來像你正在做的正確。也許而不是隻是把「檢查」你需要把

$branch_id .= '<label><input name="branch_id[]" type="checkbox" value="'.$branch_list_checkbox->id.'" checked="checked" />'.$branch_list_checkbox->name.'</label>&nbsp;'; 
0

其實只有checked是好的。當運行上述代碼時,它產生錯誤:

A PHP Error was encountered 

Severity: Notice 

Message: Trying to get property of non-object 

Filename: views/campaign_form.php 

Line Number: 104 

線104:

if($branch_list_checkbox->id == $branch_checked->branch_id) 

並且有誤差的2盒。

通過$branch_list$branch_checked產生的輸出是數組,所以我想我應該做一個foreach$branch_checked,但我不知道怎麼寫。

我使用谷歌搜索,發現foreach($a as $b => $c),但我不明白它是如何工作的;但我試圖把任何可能用於代碼的變量,它會產生錯誤。