0

I have trouble with loading the table to the form_dropdown. I have tried any solution from the same trouble with me but its not working. Here's the controller code:

<?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;
        }
    }
}

Here's the model code:

<?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();
    }
}

Here's the view code:

<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>

The trouble I'm having is: Invalid argument supplied for foreach()

1
  • because your query is returning empty result. Add IF condition before foreach Commented Apr 1, 2016 at 12:42

2 Answers 2

1

Your controller code must be :-

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;
        }
    }

And in view in place of

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

Simply use

<?php   echo form_dropdown('NegaraTujuan', $namaNegara , set_value('NegaraTujuan'));  ?>
Sign up to request clarification or add additional context in comments.

1 Comment

Sorry it didn't work. But, hey, thanks for helping and fast repond! Very much appreciated!
0

I think i have the answer for my problem:

Controller code (still same, no change whatsoever)

Model code: change the function into

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;
    }

View code:

<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>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.