【问题标题】:Codeigniter - Dependent Select Box with databaseCodeigniter - 与数据库相关的选择框
【发布时间】:2015-11-02 14:34:10
【问题描述】:

我只是想再次询问有关 codeigniter 的问题。

我想用 sql server 数据库在 codeigniter 中制作依赖选择表单。

我有一个数据库表名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>&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;
        }
    }

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

【问题讨论】:

  • 您现在遇到的错误是什么?没有正确附加??
  • @NiranjanNRaju 返回值没有出现在视图中
  • 检查我的答案。您的附加部分有误。

标签: php jquery sql ajax codeigniter


【解决方案1】:

我认为您在将值附加到选择框时遇到问题。

我会告诉你在模型本身中做所有必需的事情。如果您这样做,我们可以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.        
}

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

希望对你有帮助。

【讨论】:

  • @YogaBayuAjiPranawa 将alert(ruangan) 保留在success() 中,看看它会发出什么警报。
  • 那么ajax调用有错误...有错误请看控制台
  • 显示 500(内部服务器错误)
猜你喜欢
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
相关资源
最近更新 更多