Comunidad de diseño web y desarrollo en internet online

Problema Session en carrito de compras

Citar            
MensajeEscrito el 22 May 2009 10:36 pm
hola el problema que tengo es el siguiente:

Código :

<?php
session_start();
include_once("book_fns.php");
if ($_GET['new']){
   //nos fijamos que esten agregando un nuevo elemento al carrito
   if(!isset($_SESSION['cart'])){//nos fijamos si no esta iniciada la session y si no lo esta creamos una nueva
   $cart = array();
   $_SESSION['shopping_cart'] = $cart;
    $items = 0;
    $_SESSION['items'];
    $total_price = "0.00";
    $_SESSION['total_price'];
    }
   echo $cart["key"];
   echo $cart[$_GET['new']];
   if ($cart[$_GET['new']]){//nos fijamos si ya tiene este articulo en el carro y si es true se lo sumamos y sino solo le agregamos la nueva cantidad
      $cart[$_GET['new']] =  $cart[$_GET['new']] + $_POST['items_qty'];
   }else{
      $cart[$_GET['new']] = $_POST['items_qty'];
   }
   //foreach($cart as $numero){
   //   echo $numero;   
   //}
   //ahora vamos a calcular la cantidad de items y el precio total de sus compras
   $items = calculate_items($cart);
   $total_price = calculate_total_price($cart);
   
   }
   
do_html_header("Te encuentras en tu carrito de compras");
do_html_menu();
  if($cart && array_count_values($cart)){
   //$products_array = get_products();
   //display_shopping_cart($cart);
  }else{
    echo "No hay artículos en tu carro";
  }
do_html_footer();
?>



new es el id del producto que estan agregando al carrito, todo me anda de maravilla me crea la session, me suma los itemy me calcula su precio etc.
el problema esta en cuando salgo de la pagina y vuelvo a insertarle al mismo productos otra cierta cantidad de compras para agregar, este no me lo suma sino que me agrega este valor como nuevo.
estube revisando todas las variables y lo que pasa es que el array cart cuando vuelvo a esta pagina esta vacio es decir no contiene el id ni la cantidad anterior que se le habia agregado. entonces ahi es donde me pierdo porque no entiendo que debo hacer para que no se me pierda si ya estaria agregada a la session y deberia guardarse en el cache.
espero que me puedan ayudar
Saludos

Por 22

79 de clabLevel



 

Uruguay

msie8
Citar            
MensajeEscrito el 23 May 2009 03:59 am
bueno despues de horas tratando y tratando de entender al codigo creo que lo entendi :D

Código :

<?php
session_start();
include_once("book_fns.php");
global $cart;
if ($_GET['new']){
   //nos fijamos que esten agregando un nuevo elemento al carrito
   if(!isset($_SESSION['shopping_cart'])){//nos fijamos si no esta iniciada la session y si no lo esta creamos una nueva   
   $_SESSION['shopping_cart'];
    $items = "0";
    $_SESSION['items'];
    $total_price = "0.00";
    $_SESSION['total_price'];
    }
   $cart = array();
   //tomamos los valores de la session shopping cart
   $cart = $_SESSION['shopping_cart'];   
   if ($cart[$_GET['new']]){//nos fijamos si ya tiene este articulo en el carro y si es true se lo sumamos y sino solo le agregamos la nueva cantidad      
      $cart[$_GET['new']] = $cart[$_GET['new']] + $_POST['items_qty'];      
   }else{      
      $cart[$_GET['new']] = $_POST['items_qty'];
   }   
   //ahora vamos a calcular la cantidad de items y el precio total de sus compras
   $items = calculate_items($cart);
   $total_price = calculate_total_price($cart);
   $_SESSION['total_price'] += $total_price;
   $_SESSION['items'] = $items;
   //le pasamos todo el array a la session para que la guarde en el cache y no la perdamos y la podamos recuperar mas adelante
   $_SESSION['shopping_cart'] = $cart;
   }
   
do_html_header("Te encuentras en tu carrito de compras");
do_html_menu();
  if(isset($_SESSION['shopping_cart'])){
   display_shopping_cart($_SESSION['shopping_cart']);
  }else{
    echo "<b>AUN NO AGREGASTE NADA A TU CARRITO DE COMPRA</b>";
  }
do_html_footer();
?>



lo que hice fue cuando el codigo de agregar termina asignarle a la session cart el array cart y cuando esta seccion se actualiza que la array cart que esta vacia tome los datos de la variable de session y asi los recupero

un dia largo hoy :D pero sirvio

Saludos

Por 22

79 de clabLevel



 

Uruguay

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.