I'm implementing a shopping cart but am having a problem in checking out a person who has added item in his/her shopping busket.The code for the checkout.php script is given below
<?
require_once('functions.inc.php');
session_start();
do_html_header("Checkout");
$cart = $_SESSION['cart'];
if($cart&&array_count_values($cart))
{
display_cart($cart,false,0);
display_checkout_form($HTTP_POST_VARS);
}
else
echo"<p>There are no items in your cart";
do_html_url("index.php","Continue Shopping");
?>
After a person has added vehicles to his/her cart and now wants to checkout, the checkout.php script generates this error:
'There are no items in your cart Continue Shopping :PHP Warning: array_count_values() [function.array-count-values]: The argument should be an array in C:\...shopping_cart\checkout.php on line 12' where line 12 is
if($cart&&array_count_values($cart))
I have realised that the code is not even reading whether or not a person has added something in his/her cart , but don't no where the error is.
The fucntions in the shopping cart are found in the function.inc below:
function.inc
<?php
$table_width = '995';
function do_html_header($title = '')
{
// print an HTML header including cute logo :)
global $table_width;
?>
<html>
<head>
<title><?php echo $title?></title>
</head>
<body>
<table width = <?php echo $table_width?> cellspacing = 0 cellpadding = 6>
<tr>
<td bgcolor = "#0066CC" width = 110>
</td><td bgcolor = "#0066CC">
<h1><?php echo $title?></h1></td>
</tr>
</table>
<?php
}
function do_html_url ($url, $title) {
?>
<a href="<?=$url?>"><?=$title?></a>
<?
}
function writeShoppingCart() {
$cart = $_SESSION['cart'];
if (!$cart) {
return '<p>You have no items in your shopping cart</p>';
} else {
// Parse the cart session variable
$items = explode(',',$cart);
$s = (count($items) > 1) ? 's':'';
return '<p>You have <a href="cart.php">'.count($items).' item'.$s.' in your shopping cart</a></p>';
}
}
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<form action="cart.php?action=update" method="post" id="cart">';
$output[] = '<table>';
foreach ($contents as $id=>$qty) {
$sql = 'SELECT * FROM vehicles WHERE id = '.$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td><a href="cart.php?action=delete&id='.$id.'" class="r">Remove</a></td>';
$output[] = '<td>'.$model.' '.$make.'</td>';
$output[] = '<td>Z$'.$price.'</td>';
$output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$output[] = '<td>Z$'.($price * $qty).'</td>';
$total += $price * $qty;
$output[] = '</tr>';
}
$output[] = '</table>';
$output[] = '<p>Grand total: <strong>Z$'.$total.'</strong></p>';
$output[] = '<div><button type="submit">Update cart</button></div>';
$output[] = '</form>';
} else {
$output[] = '<p>You shopping cart is empty.</p>';
}
return join('',$output);
}
?>
your help is greatly appreciated