Hola de nuevo, bueno cambie mi script y estoy utilizando $_SESSION, aparentemente todo esta bien, pero hay un detalle, q me esta enloqueciendo, pues bien:
caso:
Al querer agregar un item a mi carrito de compras, en el primer intento no lo hace, (retrocedo un pag) y vuelvo a hacer el mismo procedimiento.. o sorpresa agrega normal...

Por momentos no hay problema y agrega normal, pero otros no... la verdad no entiendo a q se debe...
esta es parte del script en donde agrego el item
Código PHP:
$action = $_GET['action'];
//if (!session_is_registered('cart')) {
if (!isset($_SESSION['cart'])) {
$cart = new Class_Carrito;
}else {
$cart = $_SESSION['cart'];
}
switch ($action) {
case 'AddItem':
$pro = new Class_Producto;
$id_pro = $_POST['id_pro'];
$cant_pro = $_POST['cant_pro'];
$talla_pro = $_POST['talla_pro'];
$pro->ObtenerDatos($id_pro);
$datos = array('id' => $id_pro,
'cant' => $cant_pro,
'sku' => $pro->ProductoCampos['pro_sku'],
'titulo' => $pro->ProductoCampos['pro_titulo'],
'talla' => $talla_pro,
'precio' => $pro->ProductoCampos['pro_precio']);
$cart->AgregarItem($datos);
unset($datos);
//session_register('cart');
$_SESSION['cart'] = $cart;
FunRedireccionar(FunUrl('cart.php'));
break;
//continua otras instrucciones
esto es el la clase para agregar item
Código PHP:
class Class_Carrito {
var $SubTotal;
var $Carrito;
function AgregarItem($datos){
if ($this->ComprobarDatos($datos)){
for ($i=0;$i<sizeof($this->Carrito['car_id']);$i++) {
if (($this->Carrito['car_proid'][$i] == $datos['id']) && ($this->Carrito['car_talla'][$i] == $datos['talla'])) {
$this->Carrito['car_cant'][$i] = $this->Carrito['car_cant'][$i] + $datos['cant'];
$this->Carrito['car_monto'][$i] = $this->Carrito['car_cant'][$i] * $this->Carrito['car_precio'][$i];
$agregado = true;
break 1;
}else {
$agregado = false;
}
}
if (!$agregado) {
if (sizeof($this->Carrito['car_id']) == 0) {
$id_car = 1;
}else{
$id_car = end($this->Carrito['car_id']) + 1;
}
$this->Carrito['car_id'][] = $id_car;
$this->Carrito['car_proid'][] = $datos['id'];
$this->Carrito['car_cant'][] = $datos['cant'];
$this->Carrito['car_sku'][] = $datos['sku'];
$this->Carrito['car_titulo'][] = $datos['titulo'];
$this->Carrito['car_talla'][] = $datos['talla'];
$this->Carrito['car_precio'][] = $datos['precio'];
$this->Carrito['car_monto'][] = $datos['cant'] * $datos['precio'];
}
$this->SubTotal = array_sum($this->Carrito['car_monto']);
return true;
}else{
return false;
}
}
Bueno haber si con esto me pueden ayudar y para q puedan ver como se esta comportando el script pueden verlo aqui
www.martial-arts-shirts.com