[英]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.