将所选值插入到get参数数组中

时间:2017-08-04 10:24:08

标签: php forms

我有一个带有选择字段的简单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实现这一点吗?谢谢!

3 个答案:

答案 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_p1age_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

等等...

希望我理解你的问题:) //从我的手机写的,没有测试过代码。