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)'並查看它的提示。 –