Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP$\u POST循环多个字段_Php - Fatal编程技术网

PHP$\u POST循环多个字段

PHP$\u POST循环多个字段,php,Php,我正在尝试准备一个循环,它将下面表单字段中的数据存储为变量,然后我可以使用它基于这些数据创建一个新的动态表单 流程示例: 1.jquery在弹出窗口iframedone中提交隐藏表单 2.PHP从iframe中的隐藏表单循环POST,并在当前弹出的iframe中作为新表单输出。 3.用户选择要提交到数据库的字段。提交表格。 4.添加了数据库条目 5.选定字段将从当前iframe中删除。未选择任何选项 我被代码的循环部分卡住了,我需要一个有效的解决方案,允许我循环POST并输出一个用户可以提交的新

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

流程示例: 1.jquery在弹出窗口iframedone中提交隐藏表单 2.PHP从iframe中的隐藏表单循环POST,并在当前弹出的iframe中作为新表单输出。 3.用户选择要提交到数据库的字段。提交表格。 4.添加了数据库条目 5.选定字段将从当前iframe中删除。未选择任何选项

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

我知道这有很多要求,但任何帮助都会很好,我一直在努力想办法

谢谢, 史蒂夫

注:有时会有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">
输出需要以新形式进行结构化的示例:

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

像这样命名输入字段

<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

我希望我没有弄错你的问题

像这样命名您的输入字段

<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

我希望我没有弄错你的问题

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

$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);

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

$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);
使用此代码:

$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] );
}
使用此代码:

$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] );
}

本质上,您的循环被美化为var_dump。老实说,我不能说我看到了构建输出的任何尝试,更不用说以一种符合所需输出的方式来构建输出了,也不能指定生成该输出对您不起作用的方式。描述特定的问题oo会很好地解决您的问题。如果你想走程序化的道路,你需要一些技巧。你必须模拟实体。。。请参阅yones safari的答案以获得简单的解决方案。不过,我宁愿使用更复杂的方法…@EliasVanOotegem-var_dump没有提供复选框和提交按钮。@PédeLeão:没有,但OP发布的代码也没有:echo$data:$val;实际上与echo$data=>$val;,添加回显“数组”,count$\u POST[“数据”],'{;在循环之前和之后,你必须承认:这非常相似,不是吗?本质上,你的循环被美化为var_dump's。我不能诚实地说我看到了任何构建输出的尝试,更不用说以一种符合所需输出的方式来构建输出了,也没有指定生成输出的方法对你来说不起作用ecifc problemOO会很好地解决你的问题。如果你想按照程序化的方式进行,你需要一些技巧。你必须模拟实体…请参阅yones safari的答案以获得一个简单的解决方案。不过,我宁愿使用更复杂的方法…@EliasVanOotegem-var_dump没有提供复选框和提交按钮。@PédeLeão:没有,但是OP发布的代码也没有:echo$data:$val;实际上与echo$data=>$val;相同,在循环前后添加一个echo'array',count$_POST['data'],{;,你必须承认:这非常相似,不是吗?