友
我提前道歉再次发布这个问题。
我得到了Barmar的大力帮助,解决了我向用户显示数组结果时遇到的问题。
错误问题已解决,结果正在显示。
问题是数组显示一条记录。
当我们插入多行记录时,只显示一条记录。
有谁知道可能出现什么问题?
基本上,默认情况下,会向用户显示一行文本框。
如果用户需要添加其他记录,则用户单击“添加”按钮以动态添加另一行文本框,
以下代码来自名为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>
答案 0 :(得分:0)
从您发布的代码段和调试中,您的PHP代码似乎期望数据的格式与HTML表单生成的格式不同。很明显,你有很多关于表单的内容,我可能会建议你开始一个新的空白页面并逐个重新创建表单,以确保在添加下一个字段之前每个部分都正确提交。
具体到从表单接收多个记录的问题,如果您为重复的表单部分格式化HTML(假设{{ rowNumber }}
被1
替换,2
,3
,...每次添加一个新的),像这样:
<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中解析它:
<?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>";
}
编辑:对您的HTML的进一步评论
您的HTML表单有两个块:第一个“记录”的一组字段,然后是任何其他记录的重复模板。
HTML的第一个问题是您的“第一个记录”表单字段的名称与“更多记录”表单字段的名称不同:
您的“第一个记录”表单字段包含<input type="text" name="sourcename1[]"/>
等字段。
您的“更多记录”表单字段包含<input type="text" name="sourcename1{{rowNumber}}"/>
等字段。
如果您在单击“添加更多”几次后查看生成的HTML,您的HTML将如下所示:
<!-- 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"/>
从中您可以看到输入“第一个记录”字段的值与动态添加的“添加更多”字段中的值的显示方式有何不同?
您的Angular模板似乎也有一些奇怪之处:您的PHP $ _POST包含“首个记录”字段([sourcename1] => Array
)中的值,而且“添加更多”字段中有值(在[sourcename13] => Jim Brown
{{rowNumber}}
3
}的{{rowNumber}}
中,您是否有意在Angular的3
开始user = User.objects.filter(username=username).exists()
?