Foreach条件问题

时间:2013-07-14 12:58:59

标签: php html forms

我在下面有以下代码,但问题是它无法正常工作。该代码旨在更新用户输入的数量。

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

1 个答案:

答案 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;