我有一个带有选择字段的简单html表单。第一个字段询问人数。其他领域要求每个人的年龄:
<form action="#">
<select name="person">
<option value="0">0 person</option>
<option value="1">1 person</option>
<option value="2">2 persons</option>
<option value="3">3 persons</option>
<option value="4">4 persons</option>
<option value="5">5 persons</option>
</select>
<select name="age_p1">
<option value="0">0 year</option>
<option value="1">1 years</option>
<option value="2">2 years</option>
<option value="3">3 years</option>
<option value="4">4 years</option>
</select>
<select name="age_p2">
<option value="0">0 year</option>
<option value="1">1 years</option>
<option value="2">2 years</option>
<option value="3">3 years</option>
<option value="4">4 years</option>
</select>
<input type="hidden" name="personandage" value="[X,X,X]" >
<input type="submit">
</form>
所以如果我有例如3人,3个新的选择字段似乎插入每个人的年龄。
一个例子: 人1 = 1年;人2 = 4年;人3 = 5年
提交表单后,GET值必须是这样的数组 personandage = [1,4,5]
有人知道如何用PHP实现这一点吗?谢谢!
答案 0 :(得分:1)
在html上试试这个:
<form action="#">
<select name="person">
<option value="0">0 person</option>
<option value="1">1 person</option>
<option value="2">2 persons</option>
<option value="3">3 persons</option>
<option value="4">4 persons</option>
<option value="5">5 persons</option>
</select>
<select name="age[]">
<option value="0">0 year</option>
<option value="1">1 years</option>
<option value="2">2 years</option>
<option value="3">3 years</option>
<option value="4">4 years</option>
</select>
<select name="age[]">
<option value="0">0 year</option>
<option value="1">1 years</option>
<option value="2">2 years</option>
<option value="3">3 years</option>
<option value="4">4 years</option>
</select>
<input type="hidden" name="personandage" value="[X,X,X]" >
<input type="submit">
</form>
然后你可以$_GET['age']
并且应该返回一个带有年龄的数组。
答案 1 :(得分:1)
我会这样做,将age_p1
,age_p2
....放入一个名为let ages[]
的数组中这样对PHP来说无关紧要在HTML中使用,或者是否使用javascript动态添加它们。
<?php
$pna = '[';
if ( isset($_GET['submit'] ) {
$pna = $_GET['person'];
foreach ( $_GET['ages'] as $age ) {
$pna .= ",$age";
}
}
$pna .= ']';
?>
<form action="#">
<select name="person">
<option value="0">0 person</option>
<option value="1">1 person</option>
<option value="2">2 persons</option>
<option value="3">3 persons</option>
<option value="4">4 persons</option>
<option value="5">5 persons</option>
</select>
<select name="ages[]">
<option value="0">0 year</option>
<option value="1">1 years</option>
<option value="2">2 years</option>
<option value="3">3 years</option>
<option value="4">4 years</option>
</select>
<select name="ages[]">
<option value="0">0 year</option>
<option value="1">1 years</option>
<option value="2">2 years</option>
<option value="3">3 years</option>
<option value="4">4 years</option>
</select>
<input type="hidden" name="personandage" value="<?php echo $pna;?>" >
<input type="submit" name="submit">
<!-- ^^^^^^^^^^^^^ -->
<!-- note I added an name attribute -->
</form>
答案 2 :(得分:1)
<select name="age[]">
...options...
</select>
<select name="age[]">
...options...
</select>
然后将其称为
_$GET["age"][0]
和
_$GET["age"][1]
修改强>
抱歉,注意到您希望将数组作为personandage。
一种选择是在您的表单重定向到的页面上设置数组:
$array_index = $_GET["person"] - 1
for ($i = 0, $i <= $array_index, $i++) {
${"personandage" . $i = array("p1", _$GET["age"][$i]);
}
现在你的数组应该是这样的
$personandage1
$personandage2
等等...
希望我理解你的问题:) //从我的手机写的,没有测试过代码。