【问题标题】:How to create duplicate form from multi dimensional $_POST array如何从多维 $_POST 数组创建重复表单
【发布时间】:2014-05-29 19:44:37
【问题描述】:

我在主题中的表单是一个多部分表单,并且正在提交以下 POST 数据

 Array
(
[action] => save
[packageID] => 0
[form] => Array
    (
        [post_title] => Title
        [post_content] => Description
        [category] => 30,35,7
    )

[custom] => Array
    (
        [post_tags] => keyword, key, keys
        [phone_number] => 577XXXXXX
        [price] => 400
        [map_location] => 
        [map-log] => 
        [map-lat] => 
        [map-country] => 
        [map-address1] => 
        [map-address2] => 
        [map-address3] => 
        [map-zip] => 
        [map-state] => 
        [map-city] => 
    )

[check_multi] => 1
)
1 

我想动态创建第二个表单,使用 foreach 循环和隐藏字段,其中隐藏字段的名称将匹配 $_POST[key] 并且隐藏字段的值将是 $_POST[value]

例如,原始表单的名称设置如下

name="custom[map-log]"

我认为我也可以为表单键这样做是对的吗

name="form[post_title]"

需要注意的一点,显然值会改变,但我也不总是知道它们的键是否相同,所以我不能只制作一个重复的表单并用我需要它创建并自动填充的 POST 数据填充它.

提前致谢。

【问题讨论】:

  • 我不明白为什么它不起作用。你试过了吗?你能和我们分享一下吗?
  • 老实说,我没有这样做,因为我怀疑自己的逻辑并希望在继续之前看到我走在正确的轨道上。每次我发送 POST 时,它总是单维度的,但我以前从未使用过多部分表单。所以你认为这应该只适用于使用上述名称格式的普通 foreach 循环?
  • 当然,如果它有效或无效,您将了解原因,您将能够从那里取得进步。
  • 如果你想隐藏所有的输入,为什么不通过会话传递呢?
  • 我不想使用会话,因为我不想触及原始主题我只想在表单上运行一点拦截并将日期发布回来,就好像它已发送一样从原来的形式。如果我传递给会话,那么我必须修改到处理页面以从会话中读取而不是发布。但我也不想隐藏所有我想使用的电话号码。向它发送一个代码,并在确认后返回原始表单,包括经过验证的电话号码。

标签: php forms post foreach


【解决方案1】:

好的,感谢 Jay Blanchard,感谢您的指导。有时不是得到帮助,而是帮助你,知道如何帮助自己让你到达那里。你说得对。我以前从未在表单名称中看到过这种格式,但它非常方便。这是我的解决方案。

<?php foreach($_POST as $key => $value){

   if(is_array ($value)){
      foreach($value as $subkey => $subvalue){   ?>
         <input type="text" name="<?php echo $key; ?>[<?php echo $subkey; ?>]" value="<?php echo $subvalue; ?>" /><br />
      <?php  }
   } else {   ?>
         <input type="text" name="<?php echo $key; ?>" value="<?php echo $value; ?>" /><br />
    <?php  }
}

而且我明白为什么它更有效,因为没有得到我昨晚疲倦中寻找的答案。

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 2014-12-10
    • 2012-10-05
    • 2017-10-13
    • 2017-10-24
    • 2011-12-14
    • 2014-09-25
    • 1970-01-01
    相关资源
    最近更新 更多