[英]How to pass multiple PHP get parameters
在这段代码中,我试图让一个想要从下拉列表中更改事件状态的用户。 下拉菜单包含三个选项:
“已联系”“已核实”“已完成”
我希望用户单击“提交状态”并将它们带到 change.php,如 action 属性中指定的那样。 Change.php 应该有 2 个 get 参数:他们想要更改的事件的数据库列的 id,以及他们想要将其更改为的新状态。 例如它应该是这样的: http://localhost/schedule/change.php?id=60?status=verified
但这就是我现在得到的:
http://localhost/schedule/change.php?status=verified&submitStatus=Change+status
而且,下拉列表显示错误:注意:未定义索引:第 1 行中的状态
// Assume this is line 1
echo "<form method='get' action='change.php?id=".urlencode($e['id'])."?url=".urlencode($_GET['status'])."'><select name='status' id='status'>'";
if ($e['status'] == "contacted") {
echo "<option value='contacted' selected>Contacted</option>";
echo "<option value='verified'>Verified Appointment</option>";
echo "<option value='completed'>Job Completed</option>";
$counter++;
} else if ($e['status'] == "verified") {
echo "<option value='verified' selected>Verified Appointment</option>";
echo "<option value='contacted'>Contacted</option>";
echo "<option value='completed'>Job Completed</option>";
$counter++;
} else if ($e['status'] == "completed") {
echo "<option value='completed' selected>Job Completed</option>";
echo "<option value='contacted'>Contacted</option>";
echo "<option value='verified' selected>Verified Appointment</option>";
$counter++;
} else {
echo "No event status found!";
}
if ($counter == 1) {
echo "<input type='submit' name='submitStatus' value='Change status'></form></select>
</td>";
echo "</tr>";
}
我知道真正的问题在于第一个 echo 行,我从这里开始表单标记,我知道问题出在 action 参数中,但我只是不知道该怎么做! 请帮我在这里...
错误是您正在使用?
分隔参数而不是使用&
或&&
。 所以你的代码应该是:
echo "<form method='get' action='change.php?id=".urlencode($e['id'])."&url=".urlencode($_GET['status'])."'><select name='status' id='status'>'";
另外,正如 Phil 所说,如果您不想更改 url 中的数据值,请尝试使用POST
。 例如,如果更改 url 中的id
,change.php 将根据 url 中的id
参数进行更改。 在我看来,您应该使用POST
作为更改对我来说意味着非常安全的事情,而不是通过GET
完成的事情。
显然,这并不意味着您不应该使用GET
。 这些方法同样重要,但并不安全,因为可以如此轻松地从 url 更改数据。 GET
可用于搜索过程,例如您不必更改数据库,只需检索即可。
我可能跑题了,但我认为知道应该使用哪种方法对您来说非常重要。 谢谢!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.