我正在尝试准备一个循环,它将来自下面的表单字段的数据存储为变量,然后我可以使用它来创建基于此数据的新动态表单。
流程示例:
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
答案 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);