繁体   English   中英

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

[英]Using CodeIgniter to populate drop down lists in forms

作为CI和PHP(尤其是数组)的新手,我在文档和教程中苦苦挣扎。 请不要将我指向文档,我整天都在阅读它。

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

我在挣扎的是如何将数组解析为视图。 因为我要处理3个文件,所以要输出一个html文件,上下文和语法确实很重要。 我今天早些时候问了这个问题,但由于我得到的两个答案是零散的且没有上下文,我几乎迷失了头脑。 他们很有帮助,但假设我比我了解得多。

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

这是我的尝试不起作用,基本上我在视图中使用的任何变量都会返回变量未定义的错误...

查看/表格...

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

调节器

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

视图

我相信codeigniter会提取$data的键:因此只需在视图中测试var_dump($data); var_dump($country) ,然后构建form_dropdown。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM