我有一个动态构建的表单:
foreach($xml->config->popup as $popup_item){
<input class="fm-req" id="fm-popup_name[]" name="fm-popup_name[]" type="text" value="" />
<textarea class="fm-req" rows="4" cols="50" id="fm-popup_desc[]" name="fm-popup_desc[]" /></textarea>
<input class="fm-req" id="fm-popup_image[]" name="fm-popup_image[]" type="file" />
}
我之前没有使用过表单名中的数组,但是我在另一篇关于堆栈溢出的文章中看到你可以做到这一点,看起来这是一个比我计划好得多的方法,就是将$ i添加到名称的结尾和每个循环的增量,所以我最终得到:
fm-popup_name1
fm-popup_name2
fm-popup_name3 etc etc
然后我可以在构建表单时进行循环计数,将计数作为隐藏字段传递,然后使用for循环,其中x&lt; = count并按此方式插入。但是为了改进代码并使其更加紧凑和易于理解,我认为它值得这样做,但我无法找到一个好方法:
foreach($_POST['fm-popup_name'] as $index => $value) {
// get the value of name
}
foreach($_POST['fm-popup_desc'] as $index => $value) {
// get the value of name
}
foreach($_POST['fm-popup_image'] as $index => $value) {
// get the value of name
}
我可以访问我需要的所有数据,但我不想为1条记录分别进行3次插入。
我如何获取上述信息,例如:
foreach($_POST['fm-popup_name,fm-popup_desc,fm-popup_image'] as $index => $value) {
INSERT INTO mytable(
popup_name,
popup_desc,
popup_image
)
VALUES(
'$popup_name',
'$popup_desc'
'$popup_image'
)";
}
有什么想法吗?希望代码是可以的,我过滤掉了所有其他无关的垃圾,所以希望所有id等匹配,但我只是寻找一个粗略的例子,我可以转换回我的代码。
答案 0 :(得分:1)
您可以使用以下内容,但存在风险(您能发现它吗?):
$entries = count($_POST['fm-popup_name']);
for($i = 0; $i < entries; ++$i) {
$name = $_POST['fm-popup_name'];
$desc = $_POST['fm-popup_desc'];
// other processing
}
如果你没有发现它,那么风险在于并不是所有的数组元素都会被填充,所以你可能无法为每一行获得正确的映射,除非你在前端强制执行它并在处理你的循环之前验证它