Php 仅显示一条记录的数组
朋友们 我为再次发布此问题提前道歉 在解决向用户显示阵列结果的问题时,我得到了很大的帮助 错误问题已解决,结果正在显示 问题是数组显示一条记录 当我们插入多行记录时,只显示一条记录 有人知道会出什么问题吗 基本上,默认情况下,向用户显示一行文本框 如果用户需要添加其他记录,则用户单击“添加”按钮以动态添加一行额外的文本框 下面的代码来自一个名为preview.php的页面。它应该捕获用户在标记页面中输入的所有记录并显示它们,这样用户就可以选择查看记录并在需要时返回进行更改,或者在一切正常的情况下提交记录 如上所述,无论用户创建了一行还是多行,它都只显示一条记录 我们希望捕获所有行 你知道我在下面的代码中遗漏了什么吗 我事先道歉。我必须在明天的工作中展示这个,它占用了我整个周末的时间Php 仅显示一条记录的数组,php,arrays,Php,Arrays,朋友们 我为再次发布此问题提前道歉 在解决向用户显示阵列结果的问题时,我得到了很大的帮助 错误问题已解决,结果正在显示 问题是数组显示一条记录 当我们插入多行记录时,只显示一条记录 有人知道会出什么问题吗 基本上,默认情况下,向用户显示一行文本框 如果用户需要添加其他记录,则用户单击“添加”按钮以动态添加一行额外的文本框 下面的代码来自一个名为preview.php的页面。它应该捕获用户在标记页面中输入的所有记录并显示它们,这样用户就可以选择查看记录并在需要时返回进行更改,或者在一切正常的情况下
<?php
//echo "DEBUG POST DATA: <pre>".print_r($_POST, 1)."</pre>";
if(isset($_POST['employeename']))
$employeename = $_POST['employeename'];
if(isset($_POST['ttitle']))
$ttitle = $_POST['ttitle'];
echo $employeename .'<br>';
echo $ttitle .'<br> <hr width=400 align=left>';
$rowIDs = $_POST['rowIDs'];
for ($id = 0; $id < $rowIDs; $id++){
$sourcename1 = $_POST['sourcename1'][$id];
$sourceaddress1 = $_POST['sourceaddress1'][$id];
$income1 = $_POST['income1'][$id];
echo $sourcename1 .'<br>';
echo $sourceaddress1.'<br>';
echo $income1.'<br>';
}
?>
DEBUG POST DATA:
Array
(
[employeename] => Catherine Duffy
[ttitle] => Sr. Systems Analyst
[rowIDs] => 1
[sourcename1] => Array
(
[0] => Mark
Zverkov
)
[sourceaddress1] => Array
(
[0] => Address1
)
[income1] => Array
(
[0] => $79,000.00
)
[sourcename13] => Jim Brown
[sourceaddress13] => 32 Xooker Rd
[income13] => $99,000.00
[spousename] =>
[spouseAddress] =>
[spouseIncome] =>
[dividentname] =>
[dividentaddress] =>
[dividentAmt] =>
[reimbursmentName] =>
[reimburseAddr] =>
[remursementAmt] =>
[inputHonoraria] =>
[giftname] =>
[giftaddress] =>
[giftamount] =>
[orgname] =>
[orgaddresss] =>
[donationamt] =>
[creditorname] =>
[creditoraddress] =>
[creditAmt] =>
[email] =>
[submitted] => true
)
Catherine Duffy
Sr. Systems Analyst
Mark Zverkov
Address1
$79,000.00
调试后数据:
<script id="row-template" type="text/x-handlebars-template">
<div>
<!--reseed attribute IDs in case of gap resulting from deletions -->
<input type="hidden" name="rowIDs[]" value="{{rowNumber}}" />
<div class="form-group">
<label for="sourcename{{rowNumber}}">Name</label><br>
<input type="text" name="sourcename1{{rowNumber}}" id="sourcename1{{rowNumber}}" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<div class="form-group">
<label for="sourceaddress1{{rowNumber}}">Address</label><br>
<input type="text" name="sourceaddress1{{rowNumber}}" id="sourceaddress1{{rowNumber}}" style="width:250px;" class="form-control" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<div class="form-group">
<label for="income1{{rowNumber}}">Income</label><br>
<input type="text" style="width:250px;" class="form-control" name="income1{{rowNumber}}" id="income1{{rowNumber}}" value="<?php if(isset($_POST['spouseIncome{{rowNumber}}'])) echo $_POST['spouseIncome{{rowNumber}}'];?>" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<input id="Button{{rowNumber}}" type="button" rel="remove-row" value="Remove" />
</div>
</script>
<div id="addrow">
<div>
<!--reseed attribute IDs in case of gap resulting from deletions -->
<input type="hidden" name="rowIDs[]" value="{{rowNumber}}" />
<div class="form-group">
<label for="sourcename">Name</label><br>
<input type="text" name="sourcename1[]" id="sourcename1" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<div class="form-group">
<label for="sourceaddress1">Address</label><br>
<input type="text" name="sourceaddress1[]" id="sourceaddress1" style="width:250px;" class="form-control" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<div class="form-group">
<label for="income1">Income</label><br>
<input type="text" name="income1[]" id="income1" style="width:250px;" class="form-control" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
<input type="button" value="Add More" rel="add-row" />
</div>
</div>
</div><br><br>
排列
(
[employeename]=>凯瑟琳·达菲
[ttitle]=>高级系统分析师
[rowIDs]=>1
[sourcename1]=>阵列
(
[0]=>标记
兹韦尔科夫
)
[sourceaddress1]=>阵列
(
[0]=>地址1
)
[income1]=>阵列
(
[0] => $79,000.00
)
[sourcename13]=>吉姆·布朗
[sourceaddress13]=>32 Xooker路
[income13]=>99000.00美元
[spoosename]=>
[配偶地址]=>
[spooseincome]=>
[dividentname]=>
[dividentaddress]=>
[dividentam]=>
[报销人姓名]=>
[地址]=>
[薪酬金额]=>
[InputOnoraria]=>
[giftname]=>
[giftaddress]=>
[giftamount]=>
[组织名称]=>
[orgaddresss]=>
[donationamt]=>
[creditorname]=>
[信用卡地址]=>
[信用金额]=>
[电子邮件]=>
[已提交]=>true
)
凯瑟琳·达菲
高级系统分析员
马克·兹韦尔科夫
地址1
$79,000.00
//加价
<div class="this-div-gets-repeated">
<label>
Source Name:
<input type="text" name="source[{{ rowNumber }}][name]"/>
</label>
<label>
Source Address:
<input type="text" name="source[{{ rowNumber }}][address]"/>
</label>
<label>
Income:
<input type="text" name="source[{{ rowNumber }}][income]"/>
</label>
</div>
名称
地址
收入
从您发布的代码片段和调试中,您的PHP代码似乎希望数据的格式与HTML表单生成的格式不同。很明显,您在表单上有很多工作要做,我可能建议您开始一个新的空白页面,并逐块重新创建表单,以确保在添加下一个字段块之前,每个部分都正确提交
具体到从表单接收多条记录的问题,如果您为表单中重复的部分格式化HTML(假设{{rowNumber}
被1
,2
,3
,…每次添加一条新的记录),如下所示:
<?php
$sources = isset($_POST['source']) ? $_POST['source'] : []; // just in case no sources are posted
foreach ($_POST['source'] as $id => $source) {
$sourcename = $source['name'];
$sourceaddress = $source['address'];
$income = $source['income'];
echo "$sourcename<br>$sourceaddress<br>$income<br>";
}
<!-- the default "first record" -->
<input type="text" name="sourcename1[]"/>
<!-- from the first click on "Add More" -->
<input type="text" name="sourcename11"/>
<!-- from the second click on "Add More" -->
<input type="text" name="sourcename12"/>
源名称:
来源地址:
收入:
您可以期望在PHP中对其进行如下解析:
<?php
$sources = isset($_POST['source']) ? $_POST['source'] : []; // just in case no sources are posted
foreach ($_POST['source'] as $id => $source) {
$sourcename = $source['name'];
$sourceaddress = $source['address'];
$income = $source['income'];
echo "$sourcename<br>$sourceaddress<br>$income<br>";
}
<!-- the default "first record" -->
<input type="text" name="sourcename1[]"/>
<!-- from the first click on "Add More" -->
<input type="text" name="sourcename11"/>
<!-- from the second click on "Add More" -->
<input type="text" name="sourcename12"/>
查看HTML表单可能很有用,这样我们就可以检查名称/事件print\r($\u POST)的输出代码>?是否应该增加$u POST['source$id']?让我们看看html表单字段名?以及$u POST数据。也许表单命名有问题,但我们还不知道。sourceaddress1{{{rowNumber}我在字段命名上使用RiggsFolly。为什么名称值中有1?有递增吗?@这正是我喜欢的。您可以批评我的代码或方法,但您提供了建设性的建议,在您的案例中,我非常感谢。非常感谢。我想我的问题是你的示例代码和我的有什么不同。顺便说一下,我正在使用AngularJS创建动态位。我这样问是为了更好地理解。我不熟悉Angular,但让我更新一下我的答案,看看你的HTML(现在你已经发布了)有什么问题。谢谢你的耐心,甚至是坚持的方法。@BrileyHooper我希望你准备好长期坚持下去one@RiggsFolly,我以为你说你放弃了。他说他正在更新他的评论。一旦他完了,我也完了。它要么帮我解决问题,要么我明天去上班,告诉经理我需要更多的时间。我会解决的,你可以打赌。