[英]How can I pass a variable from a form through POST?
現在我知道該怎么做了,但我一直收到一個錯誤,說索引未定義。 關於我正在嘗試做的一些事情:我有一個購物車,我想更新購物車中商品的數量。 目前,我的數量在單擊添加項目按鈕時更新。 但是,一旦我嘗試通過表單手動更新數量,我就會收到一條錯誤消息,指出我嘗試傳遞的索引未定義。 由於我對 php 還很陌生,我真的不知道它是如何或為什么沒有通過我設置的值傳遞的。
現在的代碼:
這是我的購物車(無法正常工作的部分):
<?php
if (isset($_SESSION["cart"])) {
$total = 0;
foreach(BazaKnjig::seznamVsehKnjig() as $knjiga):
if (isset($_SESSION["cart"][$knjiga->id])) {
$number = $_SESSION["cart"][$knjiga->id];
?>
<form action="<?= $url ?>" method="post">
<input type="hidden" name="do" value="update_cart" />
<input type="hidden" name="id" value="<?= $knjiga->id ?>" />
<p>
<input type="number" name="numBooks" value="<?= $number ?>" size="1"> <?= $knjiga->avtor ?>: <?= substr($knjiga->naslov, 0, 20) ?> ...
<button type="submit">Posodobi</button>
</p>
</form>
<?php
$total = $total + ($knjiga->cena) * $number;
}
endforeach;
?>
<p> Skupaj: <b> <?= number_format($total, 2) ?> EUR </b></p>
我有一個表格來展示購物車中的所有物品。 當使用 POST 傳遞變量時,我收到錯誤Notice: Undefined index: numBooks
。 我做了一些谷歌搜索,發現當變量的值為空時,這是很常見的。 我不確定這是否與我使用變量$number
設置數量有關,或者我是否遺漏了一些重要的東西。
這是我用於檢查方法和過濾的代碼。
if ($method == "POST") {
$validationRules = [
'do' => [
'filter' => FILTER_VALIDATE_REGEXP,
'options' => [
"regexp" => "/^(add_into_cart|purge_cart|update_cart)$/"
]
],
'id' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 0]
]
];
$post = filter_input_array(INPUT_POST, $validationRules);
然后遵循其他功能的 switch 語句,所以我將跳過這些,因為它們沒有問題,最后是更新 switch case:
switch($post["do"]):
case "update_cart":
$id = $post["id"];
$knjiga = BazaKnjig::vrniKnjigo($id);
$quan = $post["numBooks"];
if($quan > 0) {
$_SESSION["cart"][$id] = $quan;
} else {
unset($_SESSION["cart"][$id]);
}
break;
錯誤出現在$quan = $post["numBooks"];
. 任何幫助表示贊賞。
根據 Mihai 的建議,我為“numBooks”添加了一個額外的過濾器,從而解決了問題。
沒有
$quan = $post["numBooks"]
在您的代碼中,添加它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.