1

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

流程示例:
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
4

3 回答 3

4

使用此代码:

$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] );
}
于 2013-07-29T11:40:39.067 回答
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

我希望我正确地回答了你的问题;)

于 2013-07-29T11:36:34.850 回答
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);
于 2013-07-29T11:38:06.977 回答