2015-09-09 135 views
0

我在我的視圖中有一個選擇列表。點擊其中一個選項後,控制器將根據所選選項刷新頁面。但是,問題出在刷新頁面後,所選選項未標記爲選中狀態。另外,我想在加載頁面時向控制器發送默認的ALL選項,但我不知道該怎麼做。如何標記當前選擇選項

這裏查看:

<form method="post" accept-charset="utf-8" action="<?php echo base_url("account/myaccount_ticketmanagement"); ?>"> 
<select name="change_event" onchange="this.form.submit()" type="text" class="form-control" style="margin-top:-3px; width:60%; float: right; background-color: #414042; border:none; box-shadow: none; color: white;"> 
<option value="ALL" selected="selected">ALL</option> 
<?php 
     foreach ($e_names as $e_name){ 
     echo '<option value="'.$e_name[0]['e_name'].'">'.$e_name[0['e_name'].'</option>';  
             } 
?> 
</select> 
</form> 

這是在控制器代碼:

$current_E = $this->input->post('change_event'); 
if(isset($current_E)&&!empty($current_E)){ 
    $data['record'] = $this->db->select('ticket_id, Qty, fullname,purchase_time, ticket_type, ticket_price, delivery') 
        ->where('user_id',$user_id)->get('Guest', $config['per_page'], $this->uri->segment(3)); 

} 
else{ 
    if($current_E == 'ALL'){ 
    $data['record'] = $this->db->select('ticket_id, Qty, fullname, purchase_time, ticket_type, ticket_price, delivery')->where('user_id',$user_id)->get('Guest', $config['per_page'], $this->uri->segment(3)); 

    } 
    else{ 
    $id = $this->db->select('event_id')->where('e_name',$current_E)->get('events')->result_array(); 
    $data['record'] = $this->db->select('ticket_id, Qty, fullname,purchase_time, ticket_type, ticket_price, delivery')->where('user_id',$user_id)->where('event_id',$id[0]['event_id'])->get('Guest', $config['per_page'], $this->uri->segment(3)); 
    }   
} 
+0

你需要使用AJAX這個 – CodeGodie

+1

之前也添加一個檢查到所有選項來查看是否$ current_E是,好像你正在你的數據庫調用來自控制器。這是錯誤的。數據庫查詢應該在你的模型中完成。 – CodeGodie

+0

@感謝您的建議,這只是一個測試版本。由於我真的在選擇列表中掙扎,我沒有爲此寫一個模型。除了使用AJAX之外,還有其他方法嗎?我幾乎不瞭解AJAX。 –

回答

4

通過代碼的外觀,您正在使用CodeIgniter框架。如果這是錯誤的,我會刪除這個答案,因爲它將很大程度上依賴於此。

在控制器中,您需要在$ data中爲$current_E設置一個變量。喜歡的東西:

$data['current_E'] = $current_E; 

在視圖中,要對每個選項檢查該值:

<?php 
    foreach ($e_names as $e_name){ 
     echo '<option value="'.$e_name[0]['e_name'].'"'; 
     if ($e_name[0]['e_name'] == $current_E) { 
      echo 'selected="selected"'; 
     } 
     echo '>'.$e_name[0]['e_name'].'</option>';  
    } 
?> 

這一操作將導致選擇到所需的下拉選項$ selected_E值增加,以及選擇列表中的最後一個將是瀏覽器使用的那個。

你總是可以全部將所選擇的屬性到

+0

非常感謝。這應該適合我! –

1

爲什麼不使用$_POST?由於您的表單作爲POST method值,你以前所有的選擇將在$_POST進行設置,這樣你就可以實現類似

echo '<option value="'.$e_name[0]['e_name'].'">'.$e_name[0['e_name'].(($_POST['change_event'])? "selected" : "") .'</option>'; 

輸出你的選擇,並

<option value="ALL" <?= ((!$_POST['change_event'])? "selected" : "")?> >ALL</option> 

您的所有選項

PS:未測試,但應該工作。

+0

我正在使用codeigniter。這就是爲什麼我沒有使用PHP的POST方法。 –