我有一个表达式引擎CMS,它列出了一系列成员,并允许用户对每个成员进行投票并添加注释。然后,我需要将所有这些成员作为单独的行提交到我在EE安装中创建的自定义数据库表中。我不确定如何调用从EE提交的表单。这是我的代码:
FORM
<tr>
<td><input type="text" name="user[0][name]" value=""></td>
<td><input type="text" name="user[0][party]" value=""><br></td>
<td><input type="text" name="user[0][marks]" value=""></td>
<td><input type="text" name="user[0][comments]" value=""></td>
</tr>
<tr>
<td><input type="text" name="user[1][name]" value=""></td>
<td><input type="text" name="user[1][party]" value=""><br></td>
<td><input type="text" name="user[1][marks]" value=""></td>
<td><input type="text" name="user[1][comments]" value=""></td>
</tr>
提交代码:
foreach($_POST['user'] as $user)
{
$this->db->insert('mytable', $user);
}
但是如何从EE表单中调用这个php代码呢?它只是一个简单的<form action="url.php">?
我如何设置PHP代码以利用EE的数据库连接字符串?
答案 0 :(得分:1)
Aditya并不遥远,你只需要实例化EE。因此,对于您的表单,将结果页面/模板定位为普通的html,例如:<form action="/form-result">
(或其他),那么快速而肮脏的方式就是将PHP包含在接收表单的模板中。
在该页面上(接收表单),具有以下内容(模板必须启用PHP):
<?php
$EE =& get_instance();
$postUsers = $EE->input->post('user');
foreach($postUsers as $user) {
// Extra Cleaning
$user = $EE->db->escape_str($user);
$user = $EE->security->xss_clean($user);
// Fields and values to save to DB
$dbFields = array(
'user' => $user['name'],
'party' => $user['party'],
'marks' => $user['marks'],
'comments' => $user['comments']
);
// Prefix variable used for good practice, but could hard code
$EE->db->insert($EE->db->dbprefix . 'mytable', $dbFields);
}
?>
我已经展示了重新创建数组的长方法,以便在您想要修改或添加更多字段时发送到数据库,但您可以简单地将$ user(清理后)传递给数据库,因为数组将具有相同的结构。
如果是表单发送的多个POST变量(而不是你所暗示的数组),你需要这样的东西:
foreach($_POST as $var) {
$postUsers = $EE->input->post($var);
更理想的解决方案是开发一个插件,该插件可以从生成的模板中调用以触发上述内容,或者可以通过使用EE中内置的ACT安全功能来“监听”要提交的相应表单的扩展名。 。但这可能会为您的需求增加不必要的复杂程度。
答案 1 :(得分:0)
但是如何从EE表单中调用这个PHP代码?
我通常用以下方式引用它们:
<form action="<?php echo base_url('form_processing_controller') ?>">
当我使用CodeIgniter时。
此外,为什么在使用CodeIgniter的自动加载的输入类时可以使用$_POST[]
?
$this->input->post('item_name')
...因此,CI负责为您过滤掉一些恶意活动。查看用户指南:http://codeigniter.com/user_guide/libraries/input.html