2015-09-09 98 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方法。 –