我有下面的代码,但问题是它不起作用。该代码旨在更新用户输入的任何内容的数量。
如果我回显$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>
我不确定,但您面临的问题可能是由于以下原因:试着更换这条线路
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条件中给出false(或者在您的情况下是Notice:定义不足的Index:type),因此不执行If主体,从而导致不更新$_session 中的"quantity"值
根据您的意见:尝试更换行
$_SESSION["cart_array"][$array_key]['quantity']+=$quantity;
带有:
$_SESSION["cart_array"][$array_key]['quantity'] = $quantity;