【问题标题】:Dynamic form and looping through form array to insert into Mysql动态表单和循环表单数组插入Mysql
【发布时间】:2013-12-16 01:33:21
【问题描述】:

我有一个动态构建的表单:

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 循环 where x

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 等都匹配,但我只是在寻找一个粗略的例子,我可以转换回我的代码。

【问题讨论】:

    标签: php mysql arrays forms


    【解决方案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
    
    }
    

    如果您没有发现它,风险在于并非所有数组元素都可能被填充,因此您可能无法为每一行获得正确的映射,除非您在前端强制执行它并在处理循环之前对其进行验证.

    【讨论】:

      猜你喜欢
      • 2017-09-03
      • 2017-03-27
      • 2013-08-15
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      相关资源
      最近更新 更多