Я использую PHP
и mySQL
для создания простой корзины покупок. Товары можно добавить в корзину, но моя функция «удалить элемент из корзины» не работает.
Я использую массив, хранящийся как переменную $_SESSION
, для хранения элементов корзины. Каждый элемент корзины также будет массивом, содержащим три элемента (имя, изображение sr c, id). При удалении элемента для корзины его идентификатор передается в мой файл removeFromCart. php, где я вызываю поиск по массиву, чтобы получить значение ключа удаляемого элемента, а затем пытаюсь удалить этот элемент, используя unset()
. * 1007. *
Я считаю, что это правильный подход, поскольку я не хочу удалять по index
, а по значению ключа (соответствует продукту id
). Тем не менее, элемент массива на самом деле не 'unset' из моей переменной $_SESSION['cart']
. Код следует:
Фрагмент кода со страницы продукта:
<?php session_start();?>
<div class="product-description">
<h3 class="product-name">Columbia</h3>
<img src="flags/columbia.gif" alt=""Columbia Ntional Flag">
<p class="product-price">$15</p>
<a href="addToCart.php? id=1">Add to Cart</a>
</div>
<div class="product-description">
<h3 class="product-name">Mexico</h3>
<img src="flags/mexico.gif" alt="Mexico National Flag" >
<p class="product-price">$15</p>
<a href="addToCart.php? id=2">Add to Cart</a>
</div>
Код от addToCart. php:
<?php
session_start();
if(empty($_SESSION['cart'])) {
$_SESSION['cart'] = array();
}
array_push($_SESSION['cart'], $_GET['id']);
?>
Фрагмент страницы из корзины:
<?php session_start(); ?>
$items = implode(',', $_SESSION['cart']); //get items stored in cart
$result = mysqli_query($conn,"SELECT name, image, id FROM products WHERE id in ($items)");
$incart = mysqli_fetch_all($result);
if (!$incart){
$cartName = "Your Shopping Cart is Empty.";
$cartImage = '';
}
foreach ($incart as $cartitem)
echo "
<table style=\"width:100%; border: 1px solid black; text-align: center\">
<tr>
<th style=\"background-color: goldenrod\">Product Name</th>
<th style=\"background-color: goldenrod\">Image</th>
<th style=\"background-color: goldenrod\">Remove</th>
</tr>
<tr>
<td style=\"font-size: x-large\"> $cartitem[0] </td>
<td>
<img style= \"width: 250px\" src= \"$cartitem[1]\">
</td>
<td>
<a href='removeFromCart.php? id=$cartitem[2]'>Remove Item</a>
</td>
</tr>
</table>
";
var_dump($incart);
echo "<br>"; //used to confirm arrays identiical to before
var_dump($_SESSION['cart']); // remove item was clicked
echo "<br>";
?>
Код от removeItem. php:
<?php
session_start();
$key = array_search($_GET['id'], $_SESSION['cart']);
unset($_SESSION['cart'[$key]]);
header("Refresh:10 url=cart.php");
var_dump($key); //confirms correct key value
echo "<br>";
var_dump($_GET['id']); // confirms correct array element