PHP $ _POST循环多个字段

时间:2013-07-29 11:32:34

标签: php

我正在尝试准备一个循环,它将来自下面的表单字段的数据存储为变量,然后我可以使用它来创建基于此数据的新动态表单。

流程示例:
1. jquery在弹出式iframe中提交隐藏的表单(完成)
2. PHP在iframe中从隐藏表单循环POST,并在当前弹出iframe中作为新表单输出 3.用户选择他们希望提交给数据库的字段。提交表格。
4.添加数据库条目
5.从当前iframe中删除所选字段。没有选择留下。

我被困在代码的循环部分,我需要一个有效的解决方案,允许我循环POST并输出用户可以提交的新表单。

我知道它有很多要问,但任何帮助都会很棒,一直在撞墙试图找出如何做到这一点。 :(

谢谢, 史蒂夫

PS。有时会有10个字段,有时候会有2个....这一切都取决于创建iframe时页面上的内容。但每个领域的数量总是相同的。就像我下面的字段示例一样。

字段示例(全部隐藏)

<input type="hidden" id="data[]" name="data[]" value="SOMETHING HERE">
<input type="hidden" id="data[]" name="data[]" value="SOMETHING BLAH BLAH">
<input type="hidden" id="data[]" name="data[]" value="BLAH BLAH SOMETHING">

<input type="hidden" id="info[]" name="info[]" value="MY INFO HERE">
<input type="hidden" id="info[]" name="info[]" value="RANDOM INFO HERE">
<input type="hidden" id="info[]" name="info[]" value="MORE INFO">

<input type="hidden" id="img[]" name="img[]" value="http://example.com/img2.gif">
<input type="hidden" id="img[]" name="img[]" value="http://example.com/someimage.jpg">
<input type="hidden" id="img[]" name="img[]" value="http://example.com/myimage.png">

<input type="hidden" id="title[]" name="title[]" value="Item title goes here">
<input type="hidden" id="title[]" name="title[]" value="Item title goes here ">
<input type="hidden" id="title[]" name="title[]" value="Item title goes here">

我试过我的PHP循环:

 foreach ($_POST['data'] as $data=>$val){
    echo "$data: $val <br />";
   }
 foreach ($_POST['info'] as $info=>$val){
    echo "$info: $val <br />";
   }
 foreach ($_POST['img'] as $img=>$val){
    echo "$img: $val <br />";
   }
 foreach ($_POST['title'] as $title=>$val){
    echo "$title: $val <br />";
   }

示例PHP输出

0: €29.16
1: €34.46
2: €34.46
3: €63.62
4: €53.02
5: €10.60
6: €42.42
0: ../img1.gif
1: ../img2.jpg
2: ../img3.jpg
3: ../img4.png
4: ../img5.gif
5: ../img6.jpg
6: ../img7.jpg
    etc...

需要如何以新形式构建输出的示例:

Item 1      Item 2        item 3         item 4  

Title0       title1        title2        title3
info0        info1          info2         info3
img0         img1            img2         img3   
data0        data1           data2        data3
checkbox    checkbox      checkbox      checkbox
                                                 SUBMIT BTN

3 个答案:

答案 0 :(得分:2)

使用此代码:

$items = array();
foreach($_POST['data'] as $key => $val)
{
   $items[] = array(
      'data' =>$_POST['data'] [$key],
      'info' =>$_POST['info'] [$key],
      'img' =>$_POST['img'] [$key],
      'title' =>$_POST['title'] [$key] );
}

答案 1 :(得分:1)

将输入字段命名为

<input type="hidden" id="data[]" name="data1" value="SOMETHING HERE">
<input type="hidden" id="data[]" name="data2" value="SOMETHING BLAH BLAH">
<input type="hidden" id="data[]" name="data2" value="BLAH BLAH SOMETHING">

像这样经历他们:

<?php
$num = 1;
$data = array();
while (true) {
    if (array_key_exists('data'.$num,$_POST)) {
        $data[] = $_POST['data'.$num];
    }
    else {
        break;
    }
}

print_r($data); //outputs all data values

我希望我的问题正确无误;)

答案 2 :(得分:1)

您应首先执行一些业务逻辑以获取所需的数据布局,然后使用新格式化的数据执行您正在执行的操作,即

$items = array();

foreach ($_POST['data'] as $data=>$val){
    $items[$data]['data'] = $val;
}
foreach ($_POST['info'] as $info=>$val){
    $items[$info]['info'] = $val;
}
foreach ($_POST['img'] as $img=>$val){
    $items[$img]['img'] = $val;
}
foreach ($_POST['title'] as $title=>$val){
    $items[$title]['title'] = $val;
}

var_export($items);

只要您只发布这些特定值,您实际上可以将其归结为:

$items = array();
foreach($_POST as $part => $ar) {
  if(is_array($ar) {
    foreach($ar as $idx => $val) {
      $items[$idx][$part] = $val;
    }
  } 
}
var_export($items);