2015-07-21 277 views
0
controller 
car.php 

<?php 
    class Car extends CI_Controller { 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->database(); 
     $this->load->helper('url'); 
     $this->load->helper('form'); 
     $this->load->model('company_model'); 
    } 
    public function index() 
    { 
     //starts by running the query for the countries 
     //dropdown 
     $data['companydrop'] = $this->company_model->company(); 
     //loads up the view with the query results 
     $this->load->view('car_view', $data); 
    } 
    //call to fill the second dropdown with the cities 
    public function car_model() 
    { 
     //set selected country id from POST 
     echo $company_id = $this->input->post('company_id',TRUE); 
     //run the query for the cities we specified earlier 
     $cardata['cardrop']=$this->company_model->car($company_id); 
     print_r($cardata); 
     $output = null; 
     foreach ($cardata['cardrop'] as $row) 
     { 
     //here we build a dropdown item line for each 
     // query result 
     $output .= "<option value='".$row->car_model."'>".$row->car_model."</option>"; 
     } 
     echo $output; 
    } 
} 
?> 


model 
company_model 
<?php 
class Company_model extends CI_Model { 
    public function __construct() 
    { 
     $this->load->database(); 
    } 
    //fill your contry dropdown 
    public function company() 
    { 
     $this->db->select('company_id,company_name'); 
     $this->db->from('company'); 
     $query = $this->db->get(); 
     // the query mean select cat_id,category from 
     //category 
     foreach($query->result_array() as $row){ 
     $data[$row['company_id']]=$row['company_name']; 
     } 
     // the fetching data from database is return 
     return $data; 
    } 
    //fill your cities dropdown depending on the selected city 
    public function car($company_id=string) 
    { 
     $this->db->select('car_id,car_model'); 
     $this->db->from('car'); 
     $this->db->where('company',$company_id); 
     $query = $this->db->get(); 
     return $query->result(); 
    } 
} 

?> 
view 
car_view 

<html> 
<head> 
<title>car dealers</title> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 
       <script type="text/javascript"> 
        $(document).ready(function() { 
        $("#companydrop").change(function(){ 
        /*dropdown post */// 
        $.ajax({ 
         url:"<?php echo base_url();?>index.php/car/car_model", 

         data: {id:$(this).val()}, 
         type: "POST", 
         success:function(data){ 
         $("#cardrop").html(data); 
        alert(data); 

        } 
        }); 
       }); 
      }); 


</script> 
<style> 
body{ 


     no-repeat; 
     background:url(../../../video-fallback-background.jpg) 

    } 
</style> 
</head> 
<body> 

     <!--company dropdown--> 
     <?php echo form_dropdown('companydrop',$companydrop,'','class="required" id="companydrop"'); ?> 
     <br /> 
     <br /> 
     <!--car dropdown--> 
     <select name="cardrop" id="cardrop"> 
     <option value="">Select</option> 
     </select> 
     <br /> 
    </body> 
</html> 

动态下拉列表不工作作为第一选择它是 公司名称的工作,因为它是从数据库中提取,但汽车模型不能正常工作,它没有取到dropdown.i需要从数据库中获取汽车公司模型,然后在选择公司后,指定公司的模型必须在第二个下拉列表中列出。我已经在phpmyadmin中创建了数据库,并在公司copany_id和company_name中创建了两个表汽车和公司。因为在汽车中有car_id,car_name和company_id动态笨选择不工作

+0

在ajax调用之后您是否获得了数据的价值? 如果这样使用$(“#cardrop”)。append(data);并尝试。也删除所有回声并从car_model函数中打印,除非echo $ data – shafiq

+0

如何检查ajax响应是否成功 –

+0

其不工作.. –

回答

0

请检查此示例代码以在codeigniter中创建下拉列表。

<?php 
$js = 'id="unicode" class="form-control"'; 
$unicode = array(
'2' => 'No', 
'1' => 'Yes' 
); 
echo form_dropdown('unicode', $unicode, set_value('unicode'), $js); 
?> 

这里Dropdown id是unicode,类是form-control。

HTML将看起来像:

<select name="unicode" id="unicode" class="form-control"> 
<option value="2">No</option> 
<option value="1">Yes</option> 
</select> 

你可以得到你值在DB的数组,然后它这个裁判link

存储在一个变量像$unicode。希望这helps.Check对于设置基于第一个下拉另一个下拉:

$("#dropdown1").change(function() { 
    var end = this.value; 
    $('#dropdown2').val(end);   
}); 
+0

thnx你的答复,但在我的代码首先选择工作,但第二个下拉必须改变基于第一个下拉列表。请你给我这样一个简单的例子。因为我是新的codeigniter,我不知道.. –

+0

为此,你必须使用jQuery **。如果任何人可以更正代码并重新发布,请更改** – Bugfixer

+0

,这将是一个很好的帮助。 –

0

在你的车控制器请删除print_r($cardata);第一。 然后在您的控制台中查看您从通话中得到的回复。我建议你以json格式获取数据并在客户端解析它。这是最好的做法。

+0

他们是没有print_r($ cardata)在我的控制器删除 –

+0

在你的上面的代码它写。 – Vinie

+0

其他人编辑它,对不起,在我的实际代码中它不存在 –

0
i corrected the code and finally it worked,i will post the correct code, if it helps anyone in future.thanks to everyone who tried to help me.. 

controller 

car.php 



<?php 
class Car extends CI_Controller { 
public function __construct() 
{ 

    parent::__construct(); 
    $this->load->database(); 
    $this->load->helper('url'); 
    $this->load->helper('form'); 
    $this->load->model('company_model'); 
    } 
    public function index() 
    { 


    $data['companydrop'] = $this->company_model->company(); 

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

    public function car_model() 
    { 

    $company_id = $this->input->post('company_id',TRUE); 

    $cardata['cardrop']=$this->company_model->car($company_id); 


    $output = null; 

    foreach ($cardata['cardrop'] as $row) 
    { 

    $output .= "<option value='".$row->car_model."'>".$row->car_model."</option>"; 

    } 
    echo $output; 
    } 

    } 
    ?> 

model 
company_model 

     <?php 
    class Company_model extends CI_Model { 
    public function __construct() 
    { 
    $this->load->database(); 
    } 

    public function company() 
    { 
    $this->db->select('company_id,company_name'); 
    $this->db->from('company'); 
    $query = $this->db->get(); 


    foreach($query->result_array() as $row){ 
     $data[$row['company_id']]=$row['company_name']; 
    } 

    return $data; 
    } 

    public function car($company_id) 
    { 


    $this->db->select('car_id,car_model'); 
    $this->db->from('car'); 
    $this->db->where('company_id',$company_id); 


    $query = $this->db->get(); 

    return $query->result(); 
    } 
    } 

    ?> 


view 
car_view 



    <html> 
    <head> 
    <title>car dealers</title> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 


    $("#companydrop").change(function(){ 


    /*dropdown post */// 
    $.ajax({ 

     url:"<?php echo base_url();?>index.php/car/car_model",      
     data: {company_id:$(this).val()}, 
     type: "POST", 
     success:function(data){ 
       $('#cardrop option[value!=0]').remove() 
      $("#cardrop").append(data); 


      } 
     }); 
    }); 
    }); 


    </script> 
    <style> 
    body{  

    no-repeat; 
    background:url(../../../video-fallback-background.jpg) 

    } 
    </style> 
    </head> 
    <body> 
     <center><font color="#333366"><strong></strong><h2>CR Motors</h2></font></center> 
    <center><font color="#FF8000"><h3>Select the car to purchase...</h3></center></font> 
    <!--company dropdown--> 
    <tr> 
    <td> 
    <font color="#00FF99"> 
    Select the company</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <?php echo form_dropdown('companydrop',$companydrop,'','class="required" id="companydrop"'); ?> </td> 
    </tr> 
    <br /> 
    <br /> 
    <!--car dropdown--> 
    <tr> 
    <td> 
    <font color="#00FF99"> 
    Select the model</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <select name="cardrop" id="cardrop"> 
    <option value="0">Select</option> 

    </select> 
    </td> 
    </tr> 
    <br /> 
    </body> 
    </html> 
+0

任何人都可以帮助我如何加载图片后,当我从第二个下拉列表中选择任何汽车模型,任何建议,我应该怎么做? –