Я пытаюсь настроить количество элемента, когда пользователь вводит количество, и нажмите «Обновить», но у меня возникла проблема с его работой. Когда вы заканчиваете количество и нажимаете на обновление, он ничего не делает. Ниже мой 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; } } } ?>
FORM
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>'; ?>
я не вижу никаких
session_start();
В вашем PHP-коде, если вы хотите работать с сеансом пользователя, вы должны включить session_start();
в начале вашего php-файла.
Это включает в себя файлы ajax.
Если вы сделаете ajax-вызов с php-страницы с session_start, которая НЕ ЗНАЕТ, что сценарий ajax будет «в сеансе». Вы ДОЛЖНЫ включать session_start();
в сценарии ajax.
вам не нужно перебирать $_SESSION["cart_array"]
если вы уже знаете идентификатор. это даст вам общее представление о том, что делать. это легко понять и изменить ваши потребности!
<?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>
вы можете узнать много отсюда программистов Библии