我有一个提示用户填写表单的应用程序。当他们点击提交时,他们会被重定向到另一个页面以验证他们的信息。如果他们选择编辑(而不是确认其准确性),则会将其重定向到原始表单。
为了维护页面中的值,我将初始表单输入存储在$ _SESSION中。
第二个"验证"页:
$_SESSION['formInput'] = $_POST;
如果用户返回原始表单,我将循环回读这些数据并将用户的输入放在适当的字段中。
if($_SESSION['formInput']) {
foreach($_SESSION['formInput'] as $key => $value) {
${$key} = $value;
总的来说,这似乎可以使用如下内容:
<label>First Name: </label><input type='text' data-validation='[NAME]' id='primaryOneFirst' value='{$primaryOneFirst}' name='primaryOneFirst' data-validation-label='Field' /></div><div class='formGroup colHalf'>
但是,根据访问者拥有的子女数量(在另一页上显示),动态生成表单的一部分。总的来说,我的方法就是访问数据并通过电子邮件发送;但是,我在保留这些值方面遇到了很多麻烦。
例如,知道我有以下内容:
$counter = 1;
while($counter <= $numberOf) {
$html .= "<div class='childField' id='child{$counter}'>
<h3>Child Data {$counter}</h3>
<div class='row'><div class='formGroup colHalf'><label>Child Name: </label><input type='text' data-validation
='[OPTIONAL, NAME]' data-validation-label='Field' name='childName{$counter}' value='{$childName}$counter' /></div>
<div class='formGroup colHalf'><label>Date of Birth:<select name='childBirthmonth{$counter}'>
<option value=''> </option>
<option value='01'>January
</option>
<option value='02'>February
</option>
<option value='03'>March
</option>
<option value='04'>April
</option>
<option value='05'>May
</option>
<option value='06'>June
</option>
<option value='07'>July
</option>
<option value='08'>August
</option>
<option value='09'>September
</option>
<option value='10'>October
</option>
<option value='11'>November
</option>
<option value='12'>December
</option>
</select>
<select name='childBirthday{$counter}'>"; for($i = 1; $i <= 31; $i++) {
if($i < 10) {
$i = "0" . $i;
} $html .= "<option value='$i'>$i</option>";
} $html .= "</select>
<select name='childBirthyear{$counter}'>";
for($i = 1900; $i <= date("Y"); $i++) {
$html .= "<option value='$i'>$i</option>";
} $html .= "</select></div>
</div>
<div class='row'><div class='formGroup colHalf'><label> SSN: </label><input type='text' placeholder='xxxxxxxxx' data-validation-message='Please enter a 9 digit SSN without dashes.' data-validation='[L==9, INTEGER, OPTIONAL]' value='$childSSN{$counter}' name='childSSN{$counter}' id='childSSN{$counter}' /></div><div class='formGroup colHalf'><label>Gender: </label><select value='childGender{$counter}' name='childGender{$counter}'><option value='male'>Male</option><option value='female'>Female</option></select></div></div>
<div class='row'><label>Please Check All That Apply:</label></div><ul class='checkBoxGroup' /><li>Handicapped: <input type='checkbox' name='handicap{$counter}' value='handicap' /></li><li>Full-Time Student: <input type='checkbox' name='student{$counter}' value='student' /></li><li>Step Child: <input type='checkbox' name='step{$counter}' value='stepChild' /></li><li>Foster Child: <input type='checkbox' name='foster{$counter}' value='foster' /></li><li>Different Address (than yours): <input type='checkbox' name='diff{$counter}' value='differentAddress' /></li></ul>
<div class='childAddressBox'><div class='row'><div id='childAddress{$counter}'><div class='formGroup colHalf'><label>Address: </label><input type='text' value='$childAddress{$counter}' name='childAddress{$counter}' /></div><div class='formGroup colHalf'><label>City: </label><input type='text' size=20 value='$childCity{$counter}' name='childCity{$counter}' /></div></div>
<div class='row'><div class='formGroup colHalf'><label>State: </label><input type='text' size=2 value='$childState{$counter}' name='childState{$counter}'/></div><div class='formGroup colHalf'><label>Zip</label><input type='text' size=5 value='$childZip{$counter}' name='childZip{$counter}' /></div></div>
</div>
</div></div>";
$counter++;
}
echo $html;
}
我尝试了多种方法,但我没有获得所需的输出(孩子的名字,SSN或地址),而是获得了$ counter(1)的值。而不是像value='{$childName}$counter'
或value='$childSSN{$counter}
&#39;我需要它直接转换为诸如value='{$childName1}'
或value='{$childSSN1}
之类的某些内容,就像表单的其他部分一样。我怎么能做到这一点?
非常感谢!
答案 0 :(得分:1)
对于像您的问题中的动态字段,使用数组管理数据更合适。为此,您必须使用索引语法命名字段。例如,而不是:
<input name='childName{$counter}' />
你可以写:
<input name='childName[$counter]' />
因此,当数据发送到PHP时,数据将被解析为数组。
然后,您可能可以使用此类代码输出所需的值:
<input name='childName[$counter]' value='{$childName[$counter]}'/>