【问题标题】:Retrieve two GET parameters from a url and echo out in PHP从 url 中检索两个 GET 参数并在 PHP 中回显
【发布时间】:2020-11-30 22:12:26
【问题描述】:

我有一个带有多个复选框和隐藏输入的表单,我使用 GET 将其传递到第二页。 然后我尝试在循环中检索每个复选框的值和输入并回显组合值。

HTML:

<form action="criteria.php" method="GET">
<input name="id[]" type="hidden" value="<? echo $criteria_id; ?>" />
<input type="checkbox" name="checked[]" class="checkbox-md" id="<? echo $criteria_id; ?>" value="Y">
<button type="submit" class="btn btn-lilac" role="button">Complete</button>
</form>

PHP:

$criteria_id = $_GET['id']; //get all criteria id
$criteria_checked = $_GET['checked']; //get checked criteria id
foreach($criteria_id as $id) //get id of all checkboxes {
    echo "<BR>Criteria = ".$id."Checked = ".$criteria_checked; //returns id + array?
    if ($checked='Y')//check if checked {
        echo "<BR>Criteria =".$id." Checked = Y";
    } else {
        echo "<BR>Criteria =".$id." Checked = N";
    }
}

【问题讨论】:

  • 而您的表单确实使用了 GET 方法?
  • 可以出示您的表格吗?
  • @LarsStegelitz 当然是的。
  • @Marty1452 更新了 OP。
  • 你的问题是什么?

标签: php url foreach get


【解决方案1】:

您需要确保输入具有匹配的数组键:

<input name="id[0]" type="hidden" . . .
<input name="checked[0]" type="checkbox" . . .

<input name="id[1]" type="hidden" . . .
<input name="checked[1]" type="checkbox" . . .

根据您创建这些的方式,您可以使用$criteria_id

<input name="id[<? echo $criteria_id; ?>]" type="hidden" . . .
<input name="checked[<? echo $criteria_id; ?>]" type="checkbox" . . .

这样idchecked 数组键将匹配。所有隐藏的输入都将从表单传递,但只有选中的复选框,因此请检查 id 的键是否设置在 checked 数组中:

foreach($_GET['id'] as $key => $id) {
    if (isset($_GET['checked'][$key])) {
        echo "<BR>Criteria =".$id." Checked = Y";
    } else {
        echo "<BR>Criteria =".$id." Checked = N";
    }
}

【讨论】:

  • 经过测试,这没有按预期工作。 else 子句可以正常工作,但 if 子句不行。如果没有选中复选框,则 N 显示全部,而如果选中任何复选框,则 echo ids 按 GET 参数的顺序显示,而不是复选框的 id。例如,如果我选中复选框 1、3、5,ids 1、2、3 是回显的。
  • 谢谢 - 现在按预期工作! id 需要在 get url 中匹配是有道理的!
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 2018-06-23
  • 1970-01-01
相关资源
最近更新 更多