mi carro falla

victorphp123
09 de Noviembre del 2004
hola
estoy ocupando un carro de compra que me pasaron de un libro de php y soy medio novato en esto
http://www.rahm.cl/shop/index.php esa es la direccion en donde esta mi carro
acontinuacion les envio el codigo en donde dice que falla
este es el warning
Warning: array_count_values(): Can only count STRING and INTEGER values! in /var/www/html/virtual/rahm.cl/www/shop/show_cart.php on line 43

y el codigo

<?php
include ('book_sc_fns.php');
// The shopping cart needs sessions, so start one
session_cache_limiter('public');
session_start();

@ $new = $HTTP_GET_VARS['new'];

if($new)
{
//new item selected
if(!isset($HTTP_SESSION_VARS['cart']))
{
$HTTP_SESSION_VARS['cart'] = array();
$HTTP_SESSION_VARS['items'] = 0;
$HTTP_SESSION_VARS['total_price'] ='0.00';
}
if(isset($HTTP_SESSION_VARS['cart'][$new]))
$HTTP_SESSION_VARS['cart'][$new]++;
else
$HTTP_SESSION_VARS['cart'][$new] = 1;
$HTTP_SESSION_VARS['total_price'] =
calculate_price($HTTP_SESSION_VARS['cart']);
$HTTP_SESSION_VARS['items'] = calculate_items($HTTP_SESSION_VARS['cart']);

}
if(isset($HTTP_POST_VARS['save']))
{
foreach($HTTP_SESSION_VARS['cart'] as $isbn => $qty)
{
if($HTTP_POST_VARS[$isbn]=='0')
unset($HTTP_SESSION_VARS['cart'][$isbn]);
else
$HTTP_SESSION_VARS['cart'][$isbn] = $HTTP_POST_VARS[$isbn];
}
$HTTP_SESSION_VARS['total_price'] =
calculate_price($HTTP_SESSION_VARS['cart']);
$HTTP_SESSION_VARS['items'] = calculate_items($HTTP_SESSION_VARS['cart']);
}

do_html_header('Your shopping cart');

if($HTTP_SESSION_VARS['cart']&&array_count_values($HTTP_SESSION_VARS['cart']))
display_cart($HTTP_SESSION_VARS['cart']);
else
{
echo '<p>There are no items in your cart</p>';
echo '<hr />';
}
$target = 'index.php';

// if we have just added an item to the cart, continue shopping in that category
if($new)
{
$details = get_book_details($new);
if($details['catid'])
$target = 'show_cat.php?catid='.$details['catid'];
}
display_button($target, 'continue-shopping', 'Continue Shopping');

// use this if SSL is set up
// $path = $HTTP_SERVER_VARS['PHP_SELF'];
// $server = $HTTP_SERVER_VARS['SERVER_NAME'];
// $path = str_replace('show_cart.php', '', $path);
// display_button('https://'.$server.$path.'checkout.php','go-to-checkout', 'Go To Checkout');

// if no SSL use below code
display_button('checkout.php', 'go-to-checkout', 'Go To Checkout');


do_html_footer();
?>

si me dicen donde esta el problema del desarrollo o necesitan que les de mas informacion se las envio
y si alguien necesita el codigo completo del carro de compra me lo envian a mi correo

eth0
09 de Noviembre del 2004
Utilizar array_count_values en esa línea no es un fallo... es un fallazo enorme. ;)

La función array_count_values no cuenta cuántos elementos tiene el array, sino el número de veces que aparece cada elemento (sólo STRING o INTEGER) en el array.

Si quieres comprobar si el array está vacío (como parece ser el caso), simplemente usa empty($HTTP_SESSION_VARS['cart']).

Vamos, que la línea quedaría algo así:

if ($HTTP_SESSION_VARS['cart'] && !empty($HTTP_SESSION_VARS['cart']))