简体   繁体   English

使用codeIgniter中的单个表进行动态下拉

[英]Dynamic drop down using single table in codeIgniter

Table

表

Here when I select Category 1 from drop down I should get district names which comes under Category 1 and for Category 2 I should get districts of Category 2 and so on.... As of now in my code i'm pulling out all district names from my district table master by using district codes. 在这里,当我从下拉列表中选择类别1时,我应该获得类别1下的地区名称,对于类别2,我应该获得类别2的地区,依此类推...。到目前为止,我在代码中将所有区域都拔出使用地区代码从我的地区表主中获取名称。 But I should get district names based on category selection. 但是我应该根据类别选择获得地区名称。

View: 视图:

<select class="form-control" name="category" id='cat_id'>

<?php   
  foreach($query1 as $row)
  { 
    echo '<option value="'.$row->category.'">'.$row->category.'</option>';
  }
  ?>
</select>
<select name="placename" id="placename">
  <?php   
   foreach($query2 as $row)
   { 
       echo '<option value="'.$row->district_name.'">'.$row- 
       >district_name.'</option>';
   }
  ?>
</select>

Model: 模型:

function viewcatplace()
{
   $this->db->select("district.district_name");
   $this->db->from('district');
   $this->db->join('jc_place_master', 'district.district_code = 
   jc_place_master.district');
   $query = $this->db->get();
   return $query->result();
}

Controller: 控制器:

public function viewcatplace()
{
    $this->load->model('JcMeetingExpense_model');
    $data['query1'] = $this->JcMeetingExpense_model->viewcatprice();
    $data['query2'] = $this->JcMeetingExpense_model->viewcatplace();   
    $this->load->view('JcMeetingExpense/place_view',$data);
}

您可以将这个演示用于您的解决方案: https : //www.codexworld.com/dynamic-dependent-dropdown-codeigniter-jquery-ajax/

It can be only done by ajax:

In controller:
public function index()
    {
        $web = array();
        $web['title'] = 'Select tool';
        $web['content'] = 'web/category_index';
        // $web['data'] = $this->Common_model->get_all('category','*','','');
        $web['data'] = $this->db->query('SELECT DISTINCT category FROM category')->result();
        $this->load->view('web_template', $web);
    }

Load the category data in select option:
<select class="form-control" id="select_category">
                                <option value="" disabled selected>Select category</option>
                                <?php if (isset($data) && !empty($data)) : ?>
                                    <?php foreach ($data as $key => $value) : ?>
                                        <option value="<?php echo $value->category; ?>"><?php echo $value->category; ?></option>
                                    <?php endforeach; ?>
                                <?php endif; ?>

                            </select>

<select class="form-control" id="append_district"></select>

Using jquery change event get the data using ajax call:
<script type="text/javascript">
    $(document).on('change',"#select_category",function (e) {
        var optVal= $("#select_category option:selected").val();
        if (optVal) {
            $.ajax({
                type: "post",
                url: "getCategoryDetails",
                cache: false,               
                data: {'category' : optVal},
                success: function(json){                        
                    try {        
                        var obj = jQuery.parseJSON(json);
                        $('#append_district').empty();

                        var append_data = '';
                        if (obj.length > 0) {
                            $.each(obj, function( index, value ) {
                                append_data += '<option value="'+value.district+'">'+value.district+'</option>' 
                            });

                            $('#append_district').append(append_data);
                        }
                    } catch(e) {     
                        console.log('Exception while request..');
                    }       
                },
                error: function(){                      
                    console.log('Error while request..');
                }
            });
        }
    });
</script>

The data can be get by JSON format.In controller add this method:
public function getCategoryDetails()    {
        $category =  $_POST['category'];
        $categoryData = $this->db->query('SELECT district FROM category where category="'.$category.'"')->result();
        echo json_encode ($categoryData) ;    
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM