2016-09-28 70 views
0

我有一个包含select option输入的编辑表单,我想根据条件选择默认选项。那就是:从数据库预选选项值

<select class="form-control locationid" id="locationid" name="locationid" required> 
    <option value="" disabled selected> Select branch</option> 
    <option data-id="0" value="0">NONE</option> 
     <?php foreach ($vendor as $v) { ?> 
    <option data-id="<?php echo $v['location_id']; ?>" value="<?php echo $v['location_id']?>" ><?php echo $v['name'] ;?></option> 
     <?php };?> 
</select> 

我的控制器:

$this->db->select("d.user_id as id, d.plate_number as plate_number, d.current_lat as lat, d.current_lon as lon, d.created_on as created_on, d.updated_on as updated_on, d.available as available, d.location_id as location_id, u.user_name as name, u.user_email as email, u.user_phone as phone, v.name as location_name"); 
     $this->db->from('user_driver as d'); 
     $this->db->join('user as u', 'd.user_id = u.user_id','left'); 
     $this->db->join('vendor_location as v', 'd.location_id = v.location_id','left'); 
     $query = $this->db->get(); 
     $data['driver'] = $query->result_array(); 

     $this->db->select("location_id, name"); 
     $this->db->from('vendor_location'); 
     $query2 = $this->db->get(); 
     $data['vendor'] = $query2->result_array(); 

user_driver表包含location_idvendor_location表相关location_id列列。我怎样才能使select option表显示现有location_id表中的user_driver表以及来自vendor_location表的选项?目前,上面的代码仅显示禁用选项Select branch

+0

? –

+0

来自'user_driver'表列'location_id'中的现有值。由于它是一个编辑窗体,因此它应该显示现有值@SanoojT – may

+0

,因为它是一个编辑窗体,您有一个要编辑的ID,并且我没有看到任何'$ this-> db-> where(' ID',$ ID);'在你的代码中选择值 –

回答

1

您可以在一个单独的阵列使用in_array()用于获取选择的选项,但此店location_id$data['driver']

<?php 
// in your view file 
$location = array(); 
foreach ($driver as $value) { // getting from $data['driver'] 
    $location[] = $value['location_id']; // store all location_id in an array 
} 
?> 

不是使用in_array()<option>里面像:

<?=(in_array($v['location_id'], $location) ? 'selected=""' : '')?> 

例如:

0从“选择分支”选项
  • 可以将所有location_ids存储在一个数组变量
    <select class="form-control locationid" id="locationid" name="locationid" required> 
        <option value="" disabled selected> Select branch</option> 
        <option data-id="0" value="0">NONE</option> 
        <?php foreach ($vendor as $v) { ?> 
        <option <?=(in_array($v['location_id'], $location) ? 'selected=""' : '')?> data-id="<?php echo $v['location_id']; ?>" value="<?php echo $v['location_id']?>" ><?php echo $v['name'] ;?></option> 
        <?php };?> 
    </select> 
    
  • +1

    谢谢,从来没有想过要将位置值存储到空数组中:) – may

    +0

    @may:你好。 – devpro

    1
    • 首先删除选定的属性(如: $ locations_ids)。
    • 使用in_array在foreach中我们可以检查位置是否存在。

    请参阅下面的代码 -

    <select class="form-control locationid" id="locationid" name="locationid" required> 
     
        <option value="" disabled > Select branch</option> 
     
        <option data-id="0" value="0">NONE</option> 
     
         <?php foreach ($vendor as $v) { ?> 
     
        
     
        <option data-id="<?php echo $v['location_id']; ?>" value="<?php echo $v['location_id']?>" <?php echo in_array($v['location_id'], $locations_ids) ? 'selected' : ''; ><?php echo $v['name'] ;?></option> 
     
        
     
         <?php };?> 
     
    </select>

    您想根据什么选择默认值