我在下面有以下代码,但问题是它无法正常工作。该代码旨在更新用户输入的数量。
如果我回复$type $size $quantity
,我可以看到已发送的值。
foreach ($_SESSION["cart_array"] as $array_key=>$each_item)
我认为问题在于此,但我似乎无法看到它。
有人可以看看他们是否能找到问题。感谢 的
问题
如果我在表单中输入要更新的号码。它不会更新。
PHP
<?php
session_start();
?>
<?php
if (isset($_POST['item_to_adjust']) && isset($_POST['size']) && isset($_POST['type'])) {
$item_to_adjust = $_POST['item_to_adjust'];
$type = $_POST['type'];
$size = $_POST['size'];
$quantity = $_POST['quantity'];
$quantity = preg_replace('#[^0-9]#i', '', $quantity); // filter everything but numbers
if ($quantity >= 100) { $quantity = 99; }
if ($quantity < 1) { $quantity = 1; }
if ($quantity == "") { $quantity = 1; }
$i = 0;
foreach ($_SESSION["cart_array"] as $array_key=>$each_item) {
$i++;
if ($each_item['item_id'] == $item_to_adjust && $each_item['size'] == $size && $each_item['type'] == $type) {
$_SESSION["cart_array"][$array_key]['quantity']+=$quantity;
}
}
}
?>
HTML
<form action="cart.php" method="post">
<input name="quantity" type="text" value="' . $each_item['quantity'] . '" size="1" maxlength="2" />
<input name="adjustBtn' . $item_id . '" type="submit" value="Update" />
<input name="size" type="hidden" value="' . $each_item['length'] . '" />
<input name="type" type="hidden" value="' . $each_item['Category'] . '" />
<input name="item_to_adjust" type="hidden" value="' . $item_id . '" />
</form>
答案 0 :(得分:4)
我不确定,但您遇到的问题可能是由于此: 尝试替换此行
if ($each_item['item_id'] == $item_to_adjust && $each_item['size'] == $size && $each_item['type'] == $type)
这一行:
if ($each_item['item_id'] == $item_to_adjust && $each_item['length'] == $size && $each_item['Category'] == $type)
在你的会话变量中没有名为“size”或“type”的键,所以基本上当你检查条件$ each_item ['size'] == $ size和$ each_item ['type'] == $ type它在If条件中给出错误(或者在您的情况下为通知:欠定索引:类型),因此不执行导致不更新$ _SESSION中“quantity”值的If主体
根据您的评论,请执行以下操作:尝试替换
行$_SESSION["cart_array"][$array_key]['quantity']+=$quantity;
使用:
$_SESSION["cart_array"][$array_key]['quantity'] = $quantity;