1

以下のコードがありますが、問題はそれが機能しないことです。このコードは、ユーザーが入力した量を更新するためのものです。

IF I echo$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)

セッション変数のように、「サイズ」または「タイプ」という名前のキーがないため、基本的に条件 $each_item['size'] == $size および $each_item['type'] == $type をチェックすると、それが与えられます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 に答える