首页 > 解决方案 > Codeigniter 大表单插入

问题描述

我有一个包含 120 个字段的表单要插入数据库。表单插入良好,我使用的方法如下:我从控制器中的视图中获取所有字段,并将数组($postdata)传递给模型文件以插入。

**View**
$postdata = array(
'firstname' => $this->input->post('firstname'), //1st field
'lastname' => $this->input->post('lastname'), // 2nd field
'age' => $this->input->post('age'),
....
....
'test' => $this->input->post('test') // 120th field.
);
$this->Form_Model->insertdata($postdata);

**Model:**
function insertdata($data = array()) {
        $sql_query = $this->db->insert('form_insert', $data);
        redirect('Form');
}

我的问题是有没有更好的插入方式。这种方法感觉有点重复。

标签: phpcodeigniter

解决方案


如果您只是想获取所有提交的数据的数组,您可以这样做:

$postdata = $this->input->post();

这意味着,从表单提交的所有数据都将在此数组中。如果你想从这个数组中删除任何特定元素,你可以使用unset().

例如,您可能将提交按钮命名为“submit_btn”,如下所示:

<input type="submit" name="submit_btn" />

那么这个值就会出现在上面返回的数组中。您可以像这样删除它:

$postdata = $this->input->post();

unset( $postdata['submit_btn']);

顺便说一句,我有几个建议。逻辑部分在 a 中完成Controller(您错误地将其称为View)。AView仅用于显示。并且Model是用于数据库通信的。

此外,最好对您通过表单提交从用户收到的输入进行一些验证。我们甚至可能不知道他们发送的是什么数据!

redirect()并将您在 中使用的移动到ModelController尝试调用该insertdata()方法的位置。在那里Model,您只需返回一个值(true 或 false 或其他)并在内部执行业务逻辑Controller

你把一切都搞混了。这就是为什么我想给你一些建议来帮助你。

希望能帮助到你 :)


推荐阅读