[英]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.