Kimmy, veo algunos errores en el script:
El uso de
session_register() no es recomendado por una serie de inconvenientes en la manipulacion de valores.
Código php:
Ver original// if(!session_is_registered("cart")) Cambia este if por las siguientes tres lineas
if(isset($_SESSION['cart'])) $cart = $_SESSION['cart'];
else {
Supongo que dentro de if($new) se deben realizar los procesos para agregar nuevos productos al carro, por lo que el bloque que colocaste debe estar dentro de este if, justo antes del cierre de }
Mas o menos corregido y explicado:
Código php:
Ver originalif(isset($cart[$new])) // Si ya existe el producto en el carro $cart[$new]++; // Se incrementa en 1
else // Si no se ha agregado al carro
$cart[$new] = 1; // Se agrega con 1
// Siempre se realiza el calculo al agregar productos
$total_price = calculate_price($cart);
$items = calculate_items($cart);
Al terminar de procesar el carro no olvides reintegrarlo a la sesion:
$_SESSION['cart'] = $cart;