从数据库加载表到下拉列表CodeIgniter

时间:2016-04-01 12:33:53

标签: codeigniter

将表加载到form_dropdown时遇到问题。我试过任何与我同样麻烦的解决方案,但它没有用。 这是控制器代码:

<?php
class Registrasi extends Superuser_Controller
{
    public $data = array(
        'halaman' => 'registrasi',
        'main_view' => 'program/administrasi/registrasi_list',
        'title' => 'Data Registrasi',
    );

    public function __construct()
    {
        parent::__construct();
        $this->load->model('program/administrasi/Registrasi_model', 'registrasi_model');
    }

    public function index()
    {
        $registrasi = $this->registrasi_model->get_all_registrasi_data();

        $this->data['registrasiData'] = $registrasi;

        $this->load->view($this->layout, $this->data);
    }

    public function tambah()
    {
        $this->data['namaNegara'] =  $this->registrasi_model->get_nama_negara();
        $this->data['main_view'] = 'program/administrasi/registrasi_form';
        $this->data['form_action'] = site_url('program/administrasi/registrasi/tambah');

        // Data untuk form.
        if (! $_POST) {
            $registrasi = (object) $this->registrasi_model->default_value;
        } else {
            $registrasi = $this->input->post(null, true);
        }   

        // Validasi.
        if (! $this->registrasi_model->validate('form_rules')) {
            $this->data['values'] = (object) $registrasi;
            $this->load->view($this->layout, $this->data);
            return;
        }
    }
}

这是型号代码:

<?php
class Registrasi_model extends MY_Model
{
    protected $_tabel = 'tb_registrasi';    
    protected $form_rules = array(
        array(
            'field' => 'Negara_Tujuan',
            'label' => 'Negara Tujuan',
            'rules' => 'trim|xss_clean|required|max_length[50]'
        )
    );

    public $default_value = array(
        'Negara_Tujuan' => ''
    );

    public function get_nama_negara()
    {
        $query = $this->db->query('SELECT Nama_Negara FROM tb_negara_tujuan');
        return $query->result();
    }
}

这是观看代码:

<div class="container">
    <h2>Form Registrasi</h2>
    <hr>
    <?php echo form_open($form_action, array('id'=>'myform', 'class'=>'myform', 'role'=>'form')) ?>
    <div class="container">
        <div class="row">
            <div class="form-group has-feedback <?php set_validation_style('Negara_Tujuan')?>">
                <?php echo form_label('Negara Tujuan', 'negara_tujuan', array('class' => 'control-label')) ?>
                <?php
                foreach($namaNegara as $row)
                    {
                        echo form_dropdown('NegaraTujuan', $row->Nama_Negara);
                    }
                ?>
                <?php set_validation_icon('Negara_Tujuan') ?>
                <?php echo form_error('Negara_Tujuan', '<span class="help-block">', '</span>');?>
            </div>

        <?php echo form_button(array('content'=>'Simpan', 'type'=>'submit', 'class'=>'btn btn-primary', 'data-confirm'=>'Anda yakin akan menyimpan data ini?')) ?>
        </div>
    </div>
    <?php echo form_close() ?>
</div>

我遇到的麻烦是:为foreach()提供的参数无效

2 个答案:

答案 0 :(得分:1)

您的控制器代码必须是: -

public function tambah()
    {
        $namaNegara[''] = 'select a option';
        $namaNegaras = $this->registrasi_model->get_nama_negara();
        foreach($namaNegaras as $namaNegaranew)
        {
            $namaNegara[$namaNegaranew->id] = $namaNegaranew->Nama_Negara ;
        }
        $this->data['namaNegara'] =  $namaNegara;
        $this->data['main_view'] = 'program/administrasi/registrasi_form';
        $this->data['form_action'] = site_url('program/administrasi/registrasi/tambah');

        // Data untuk form.
        if (! $_POST) {
            $registrasi = (object) $this->registrasi_model->default_value;
        } else {
            $registrasi = $this->input->post(null, true);
        }   

        // Validasi.
        if (! $this->registrasi_model->validate('form_rules')) {
            $this->data['values'] = (object) $registrasi;
            $this->load->view($this->layout, $this->data);
            return;
        }
    }

代替

<?php
                foreach($namaNegara as $row)
                    {
                        echo form_dropdown('NegaraTujuan', $row->Nama_Negara);
                    }
                ?>

只需使用

<?php   echo form_dropdown('NegaraTujuan', $namaNegara , set_value('NegaraTujuan'));  ?>

答案 1 :(得分:0)

我想我的问题有答案:

控制器代码(仍然相同,无论如何都没有变化)

模型代码:将函数更改为

public function get_nama_negara()
    {
        $query = $this->db->query('SELECT Nama_Negara FROM tb_negara_tujuan');
        $dropdowns = $query->result();
        foreach ($dropdowns as $dropdown)
        {
            $dropdownlist[$dropdown->Nama_Negara] = $dropdown->Nama_Negara;
        }
        $finaldropdown = $dropdownlist;
        return $finaldropdown;
    }

查看代码:

<div class="container">
    <h2>Form Registrasi</h2>
    <hr>
    <?php echo form_open($form_action, array('id'=>'myform', 'class'=>'myform', 'role'=>'form')) ?>
    <div class="container">
        <div class="row">
            <div class="form-group has-feedback <?php set_validation_style('Negara_Tujuan')?>">
                <?php echo form_label('Negara Tujuan', 'negara_tujuan', array('class' => 'control-label')) ?>
                <?php echo form_dropdown('NegaraTujuan', $namaNegara, set_value('NegaraTujuan'), 'class="dropdown"'); ?>
                <?php set_validation_icon('Negara_Tujuan') ?>
                <?php echo form_error('Negara_Tujuan', '<span class="help-block">', '</span>');?>
            </div>

        <?php echo form_button(array('content'=>'Simpan', 'type'=>'submit', 'class'=>'btn btn-primary', 'data-confirm'=>'Anda yakin akan menyimpan data ini?')) ?>
        </div>
    </div>
    <?php echo form_close() ?>
</div>