我只想再询问一下codeigniter。
我想在codeigniter中使用sql server数据库创建依赖选择表单。
我有一个数据库表名MS_UPB
(它包含一个位置)和MS_RUANG
(它包含该位置的一个房间)。 我的任务是显示MS_RUANG.kd_lokasi
(这是房间位置ID)= MS_UP.kd_lokasi
的房间(这是位置ID),并在相关选择框中显示codeigniter
我的观点:
<?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> </p>
<p> </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)
我认为您在将值附加到选择框时遇到问题。
我会告诉你在模型中做所有必需的东西。如果您这样做,我们可以 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.
}
我们减少了一个循环的执行时间。
希望它有所帮助。