Когда $cart == NULL
(как назначено в вашем предложении else
), он не может count
, поскольку NULL
не имеет интерфейса Countable
. Начиная с PHP 7.2 , это приводит к появившемуся предупреждению, которое вы видели.
Но, похоже, вы не должны пытаться выводить корзину, если у вас ее нет, поэтому Вы должны просто переместить этот код в свой блок if
, то есть
$total = 0;
if(isset($_SESSION['cart']))
{
$cart = $_SESSION['cart'];
for ($i=0; $i<count($cart); $i++)
{
$item_id = $cart[$i][0];
$query = "SELECT * FROM items WHERE id=$item_id";
$result = $db->query($query);
if ($row = $result->fetch())
{
$price = ($row['price']*$cart[$i][1]) + $row['shipping_price'];
}
$total += $price;
}
?>
<div class="cart_details"> <?php echo count($cart);?> <br />
<span class="border_cart"></span> Total: <span class="price"><?php echo "BD " .
number_format((float)$total,3,'.',''); ?></span> </div>
<div class="cart_icon"><a href="checkout.php" title="Checkout"><img src="images/shoppingcart.png"
alt="" width="48" height="48" border="0" /></a></div>
</div>
<?php
}
else
{
$cart = NULL;
}
?>