2015-11-02 100 views
1

我只想再问一下codeigniter。Codeigniter - 依赖选择框与数据库

我想使用sql server数据库在codeigniter中进行依赖选择表单。

我有一个数据库表名MS_UPB(它包含一个位置)和MS_RUANG(它包含在该位置的房间)。 我的任务是展示房间里的MS_RUANG.kd_lokasi(这是房间的位置ID)= MS_UP.kd_lokasi(这是位置ID),并显示在从属选择框笨

我的看法:

<?php 
echo form_open('admin/laporan/tampildbr',$att) 
?> 
     <div class="control-group"> 
      <label class="control-label" for="inputEmail">Unit Kerja</label> 
      <div class="controls"> 
       <select name="unit" id="unit"> 
       <?php 
       foreach ($isdata as $row) { 
        echo "<option value='".$row->KDUPB."|".$row->NAMAUPB."'>".$row->NAMAUPB."</option>"; 
       } 
       ?> 
       </select> 
      </div> 
     </div> 

     <div class="control-group"> 
      <label class="control-label" for="inputEmail">Ruangan</label> 
      <div class="controls"> 
       <select name="ruangan" id="ruangan" id="ruangan_label"> 
        <option value=""></option> 
       </select> 
      </div> 
     </div> 

     <div class="control-group"> 
      <label class="control-label" for="inputEmail">Jenis</label> 
      <div class="controls"> 
       <input type="radio" name="jenis" value="DAFTAR BARANG RUANGAN" />Daftar Barang ruangan 
      </div> 
      <div class="controls"> 
       <input type="radio" name="jenis" value="REKAP DBR" />Rekap DBR 
      </div> 
     </div> 

      <div class="control-group"> 
      <div class="controls"> 
      <button type="submit" class="btn btn-success" name="submit" formtarget="_blank">Kirim</button> 
      </div> 
      </div> 
      </form> 
      <p>&nbsp;</p> 
      <p>&nbsp;</p> 

<?php form_close();?> 

<script type="text/javascript"> 
$('#ruangan,#ruangan_label').hide(); 
$('#unit').change(function(){ 
    var unit_id = $('#unit').val(); 
    if (unit_id != ""){ 
     var post_url = "admin/laporan/getruangan" + unit_id; 
     $.ajax({ 
      type: "POST", 
      url: post_url, 
      success: function(ruangan) //what's this ruangan mean? 
       { 
       $('#ruangan').empty(); 
       $('#ruangan, #ruangan_label').show(); 
        $.each(ruangan,function(kd_ruang,ruang) 
        { 
        var opt = $('<option />'); 
         opt.val(kd_ruang); 
         opt.text(ruang); 
         $('#ruangan').append(opt); 
        }); 
       } //end success 
     }); //end AJAX 
    } else { 
     $('#ruangan').empty(); 
     $('#ruangan, #ruangan_label').hide(); 
    } 
}); 
</script> 

我的控制器:

function getruangan($unit) 
    { 
     $unit=explode('|',$unit); 
     $unitkerja=$unit[0]; 
     $this->load->model('admin/laporanmodel','',TRUE); 
     header('Content-Type: application/x-json; charset=utf-8'); 
     echo (json_encode($this->laporanmodel->get_ruangan($unitkerja))); 
    } 

我的模型:

function get_ruangan($unit) 
    { 
     $this->db->select('kd_ruang,namaruang'); 
     $this->db->from('MS_RUANG'); 
     $this->db->where('kd_lokasi, "'.$unit.'"'); 
     $query=$this->db->get(); 
     $ruangan=array(); 
     if($query->result()){ 
      foreach ($query->result() as $ruang) { 
       $ruangan[$ruang->kd_ruang] = $ruang->kd_ruang; 
      } 
      return $ruangan; 
     } else { 
      return FALSE; 
     } 
    } 

请帮助我,谢谢你的帮助:)

+0

你现在得到的错误是什么?没有得到适当的附加? –

+0

@NiranjanNRaju返回值不出现在视图 –

+0

检查我的答案。你的追加部分有错误。 –

回答

0

我认为你有问题,而将值附加到您的选择框。

我会告诉你在模型本身做所有需要的东西。如果你这样做,我们可以reduce execution time of one for loop

尝试改变你的模型是这样的。

在型号

if($query->result()){ 
    $option = "<option>Select the value</option>";// this is for default value. 
    foreach ($query->result() as $ruang) { 
     $ruangan[$ruang->kd_ruang] = $ruang->kd_ruang; 
     $option .= "<option value='$ruang->kd_ruang'>{$ruang->kd_ruang}</option>". 
    } 
    return $option; 
} else { 
    return FALSE; 
} 

在模型只我们正在生成我们认为需要的HTML。

在控制器

//header('Content-Type: application/x-json; charset=utf-8');// comment this line 
echo ($this->laporanmodel->get_ruangan($unitkerja)); 

我已删除在控制器json一部分。我们将在此处提供纯文本。

鉴于

林改变AJAX整个success()

success: function(ruangan) //what's this ruangan mean? 
{ 
    $('#ruangan').append(ruangan);// just append the value coming from ajax call here.   
} 

我们已经减少一个循环的执行时间。

希望它有帮助。

+0

仍然不起作用 –

+0

是什么问题? –

+0

@YogaBayuAjiPranawa在'success()'中保留'alert(ruanan)'并查看它的提示。 –