首页 > 解决方案 > 显示从 ajax 和 codeigniter 循环的选择复选框

问题描述

我想显示从 db 循环的复选框,如果我尝试在字段中选择数据 id_kendaraan,然后显示来自该 id 的数据。

这是我的视图代码:

<div class="modal fade" id="tambah" tabindex="-1" role="dialog" aria-labelledby="largeModal" aria-hidden="true">
            <div class="modal-dialog">
            <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
                <h3 class="modal-title" id="myModalLabel">Tambah Pemeliharaan</h3>
            </div>
            <form class="form-horizontal" method="post" action="<?php echo base_url()?>Data/Pemeliharaan/Tambah">
                <div class="modal-body">
                    <div class="form-group">
                    <label class="control-label col-xs-3">Nama Kendaraan</label>
                        <div class="col-xs-8">
                            <select class="form-control"  name="id_kendaraan" id="id_kendaraan" required>
                            <option>Pilih Kendaraan</option>
                            <?php
                            if(!empty($kendaraan_)) {
                            foreach ($kendaraan_ as $isi) {
                            ?>
                            <option value="<?php echo $isi['id_kendaraan']?>"><?php echo $isi['nama']?> - <?php echo $isi['platno']?></option>
                            <?php }} ?>
                            </select>
                        </div>
                    </div>
                    <?php
                    $index =0;          
                    foreach ($subkriteria_ as $kr_key => $kriteria) {
                    ?>
                    <div class="form-group">
                        <label class="control-label col-xs-3"><?php echo $kriteria['nama_kriteria'] ?></label> 
                        <div class="col-xs-8">
                                <input type="hidden" name="status_pemeliharaan" value="1" class="form-control">
                                <input type="hidden" name="id_kriteria[]" value="<?php echo $kriteria['id_kriteria'] ?>" class="form-control">  
                            <?php if(!empty($kriteria['sub'])) { ?> 
                            <select class="form-control"  name="isi_kriteria[]" required>
                                <option>Pilih Sub Kriteria</option>
                                <?php $no = 1; foreach ($kriteria['sub'] as $data)     { ?>
                                <option value="<?php echo $data['value'] ?>"><?php echo $data['namasubkriteria'] ?> - <?php echo $data['value'] ?></option>
                                <?php  $no++; } ?>
                            </select>
                            <?php } else if($kriteria['link']=='tahun_beli') { ?>
                                <input name="isi_kriteria[]" value="" class="form-control" type="text" placeholder="Isi Kriteria..." readonly required>
                            <?php } else { ?>
                                <input name="isi_kriteria[]" value="" class="form-control" type="number" placeholder="Isi Kriteria..." required>
                            <?php } ?>
                        </div>
                    </div>
                    <?php } ?>
                    <div class="form-group">
                    <label class="control-label col-xs-3">tes</label>
                        <div class="col-xs-8">
                        <input type="checkbox" name="id_sparepart[]" value=""> //my trouble
                        <input type="text" name="sparepart" value=""> //my trouble
                        </div>
                    </div>
                </div> 
                <div class="modal-footer">
                    <button class="btn" data-dismiss="modal" aria-hidden="true">Tutup</button>
                    <button class="btn btn-info">Submit</button>
                </div>
            </form>
            </div>
            </div>
        </div>


<script type="text/javascript">
$(document).ready(function(){
        $('#id_kendaraan').on('input',function(){
            
        var id_kendaraan=$(this).val();
        $.ajax({
            type : "POST",
            url  : "<?php echo base_url('Data/Pemeliharaan/GetKendaraanById')?>",
            dataType : "JSON",
            data : {id_kendaraan: id_kendaraan},
            cache:false,
            success: function(data){
                $.each(data,function(id_kendaraan, tahun_beli, jenis){
                    $('[name="isi_kriteria[]"]').val(data.tahun_beli);
                    $('[name="id_jenis"]').val(data.id_jenis);
                    $('[name="id_sparepart[]"]').val(data.id_sparepart); //my trouble
                    $('[name="sparepart"]').val(data.sparepart); //my trouble
                        
                });
                    
            }
        });
        return false;
    });
});
</script>

在此代码中,如果我从选择表单中选择一个 kendaran,则数据会根据所选的 kendaraan 出现。它正在工作,但在复选框上不显示用于从数据库循环的数据备件。

这是我的控制器:

function GetKendaraanById(){
        $id_kendaraan=$this->input->post('id_kendaraan');
        $data=$this->PemeliharaanModel->GetById($id_kendaraan); ;
        echo json_encode($data);
      }

我从视图$id_kendaraan中获取参数的数据。

这是我的模型:

function GetById($id_kendaraan){
        $this->db->select('*');
        $this->db->from('tb_kendaraan');
        $this->db->join('tb_sparepart', 'tb_sparepart.id_jenis = tb_kendaraan.id_jenis');
        $this->db->where('tb_kendaraan.id_kendaraan',$id_kendaraan);
        $query = $this->db->get();
        if($query->num_rows() > 0)
        {
        foreach ($query->result() as $data) {
                $hasil=array(
                    'tahun_beli' => $data->tahun_beli,
                    'id_jenis' => $data->id_jenis,
                    'id_sparepart' => $data->id_sparepart,
                    'sparepart' => $data->sparepart,
                    );
            }
        }
        return $hasil;
    }

字段 tahun_beli, id jenis 成功显示在视图中。但备件中的复选框没有循环,只显示一个数据。

复选框 选择 nama kendaraan 后,复选框应根据 kendaraan 的类型出现,图像中圈出的数据应出现更多复选框

谢谢你帮助我

更改我的代码后

标签: phpajaxloopscodeignitercheckbox

解决方案


在您的模型中

    $hasil=array(
                'tahun_beli' => $data->tahun_beli,
                'id_jenis' => $data->id_jenis,
                'id_sparepart' => $data->id_sparepart,
                'sparepart' => $data->sparepart,
                );

你应该使用 [] 将数据存储在 $hasil

   $hasil[]=array(
                'tahun_beli' => $data->tahun_beli,
                'id_jenis' => $data->id_jenis,
                'id_sparepart' => $data->id_sparepart,
                'sparepart' => $data->sparepart,
                );


推荐阅读