-1

当用户输入数量并单击“更新”时,我正在尝试调整项目的数量,但我无法让它工作。当您结束数量并单击更新时,它什么也不做。下面是我的php代码

PHP 代码

<?php start_session(); ?>


<?php 
if (isset($_POST['item_to_adjust']) && $_POST['item_to_adjust'] != "") {
    $item_to_adjust = $_POST['item_to_adjust'];
    $quantity = $_POST['quantity'];
    $quantity = preg_replace('#[^0-9]#i', '', $quantity);
    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) { 
              if ($each_item['item_id'] == $pid  && $each_item['item_to_adjust'] == $item_to_adjust && $each_item['length'] == $length && $each_item['Category'] == $Category) {
                      $_SESSION["cart_array"][$array_key]['quantity']=$quantity;
                      $wasFound = true;
}
}


}
?>

形式

echo '<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="item_to_adjust" type="hidden" value="' . $item_id . '" />
</form>';
?>
4

2 回答 2

0

$_SESSION["cart_array"]如果您已经知道 id,则不必循环。这将使您大致了解该怎么做。很容易理解和改变您的需求!

<?php session_start();

$itemid=(int)$_POST['itemid'];
$quantity=(int)$_POST['quantity'];
$size=(int)$_POST['size'];

$i = md5("$itemid # $size"); // id with size for cart array id

if (isset($_SESSION["cart_array"][$i])) {
$_SESSION["cart_array"][$i]['quantity']+=$quantity;
}
else
{
$_SESSION["cart_array"][$i] = array('id'=>$itemid,'size'=>$size,'quantity'=>$quantity); 
}

print_r($_SESSION["cart_array"]);
?>

<p>item 1 - s= <?php echo($_SESSION["cart_array"][md5("1 # 1")]['quantity']); // debug purposes ?>
<form action="" method="post">
<input name="itemid" type="hidden" value="1" />
<input name="quantity" type="text" value="" size="1" maxlength="2" />
<select name="size">
  <option value="1">s</option>
  <option value="2">m</option>
  <option value="3">l</option>
</select>
<input name="adjustBtn" type="submit" value="Add" />
</form></p>

<p>item 2
<form action="" method="post">
<input name="itemid" type="hidden" value="2" />
<input name="quantity" type="text" value="" size="1" maxlength="2" />
<select name="size">
  <option value="1">s</option>
  <option value="2">m</option>
  <option value="3">l</option>
</select>
<input name="adjustBtn" type="submit" value="Add" />
</form>
</p>

你可以从这里学到很多程序员圣经

于 2013-06-24T20:27:39.370 回答
0

我没看到

session_start();

在你的 PHP 代码中,如果你想使用用户的会话,你必须session_start();在你的 php 文件的开头包含。

这包括 ajax 文件。

如果您从具有 session_start 的 php 页面进行 ajax 调用,这并不意味着 ajax 脚本将处于“会话中”。您必须包含session_start();在 ajax 脚本中。

于 2013-06-22T10:39:53.437 回答