使用CodeIgniter填充表单中的下拉列表

时间:2014-03-11 00:55:06

标签: php codeigniter

作为CI和PHP的新手,尤其是数组,我正在努力学习文档和教程。请不要指向我的文档,我一直在阅读它。

据我所知,我需要一个视图(表单),控制器和模型。模型通过类/函数连接到我的默认数据库连接(我的数据库是我的下拉列表国家/地区数据的存储位置),它返回一个数组,最后模型将数组解析为表单。

我奋斗的地方是如何将数组解析到视图中。因为我正在处理3个文件,要输出一个html文件,上下文非常重要,语法也是如此。我今天早些时候问了这个问题,几乎失去了理智,因为我得到的两个答案都是支离破碎而且脱离了背景。他们很有帮助,但我认为我比我知道得多。

换句话说,请明确,因为语法疏忽或知识假设可能让我头疼几个小时。提前谢谢!

这是我的尝试无法正常工作,基本上我在视图中使用的变量返回一个变量undefined error ...

查看/表格...

<body>   
<?php echo form_open('form'); ?> 

<h5>Country</h5>
<?php echo form_dropdown('', $data, '');?>

<div><input type="submit" value="Submit" /></div>    
<?php echo form_close() ?>    
</body>

我的控制器......

<?php

class Form extends CI_Controller {

    function index()
    {
        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');        




        $this->load->model('country');
        $data['country'] = $this->country->get_country();
        $this->load->view('myform', $data);


        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('myform');
        }
        else
        {
            $this->load->database();

            $sql = "INSERT INTO donations (country) VALUES (
            ".$this->db->escape($this->input->post('country')).";

            $this->db->query($sql);

            echo $this->db->affected_rows(); 

            $this->load->view('formsuccess');
        }
    }
}
?>

我的模特......

<?php

class Country extends CI_Model
{

function get_country() {
    $this->load->database();
    $sql = ('select * from countries');
    return $this->db->query($sql)->result();
    }
}
?>

1 个答案:

答案 0 :(得分:1)

<强>控制器

您有$data['country']来自数据库的数据,但您没有将$ data添加到视图中。 使用$this->load->view('myform', $data);将数据传递给视图。

查看

我相信codeigniter会在$data中提取密钥: 所以,只需在视图中测试var_dump($data);var_dump($country)echo form_dropdown('country_dropdown', $country, ''); 然后构建form_dropdown。

在视图中使用function get_country() { $this->load->database(); $sql = ('select * from countries'); $query = $this->db->query($sql); foreach($query->result_array() as $row) { $data[$row['id']] = $row['name']; } return $data; }

<强>模型

调整模型以返回form_dropdown所需的数组结构。

{{1}}