1

我在下面有以下代码,但问题是它不起作用。该代码旨在更新用户输入的任何数量。

如果我回$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>
4

1 回答 1

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 条件中为 false(或者在您的情况下为 Notice : Underfined Index:Type),因此不执行 If 主体,导致不更新 $_SESSION 中的“数量”值

根据您的评论,请执行以下操作:尝试替换该行

$_SESSION["cart_array"][$array_key]['quantity']+=$quantity;

和:

$_SESSION["cart_array"][$array_key]['quantity'] = $quantity;
于 2013-07-14T13:52:12.550 回答