我有多个表单,将使用相同的字段生成4次循环。我很困惑如何使用循环在相同的数据库表中提交这些字段。 我的表格看起来像这样:
<form action="http://localhost/pages/edit" method="post" name="form">
<p><label for='short'>Name</label><br/><input type="text" name="title[]" value="" /></p>
<p><label for='short'>Url</label><br/><input type="text" name="url[]" value="ddd-df-adsfasd--asdf" /></p>
<p><label for='short'>Short Description</label><br/><textarea name="shortdesc[]" cols="90" rows="12" id="short" size="40" ></textarea></p>
<p><label for='long'>Long Description</label><br/><textarea name="longdesc[]" cols="40" rows="5" id="long" ></textarea></p>
<input type="hidden" name="category_id[]" value="124" />
<input type="submit" name="submit" value="Update" />
</form>
此表单内容将生成4次。我很困惑如何将这些值带到控制器并将其添加到数据库。
答案 0 :(得分:2)
尝试一下:
$fields = array('title', 'url', 'shortdesc', 'longdesc', 'category_id');
foreach ($fields as $field)
{
foreach ($_POST[$field] as $key => $value)
{
$data[$key][$field] = $value;
}
}
foreach ($data as $values)
{
$this->db->insert('table_name', $values);
}
确实有更简单的方法,但这是您使用的表单字段名称最灵活的方式,并不关心您发布的项目数量。您确实说过要插入而不是更新,这假设您的表列名称与表单字段名称匹配。
你可以循环遍历$ _POST数组,但这样可以轻松发布其他字段,而无需将其值添加到插入数组中。
当你说i have multiple form
时,我有点不清楚:你需要确保它都在一个<form>
标签中。