Foros del Web » Programando para Internet » PHP »

No me guarda el primer articulo que agrego

Estas en el tema de No me guarda el primer articulo que agrego en el foro de PHP en Foros del Web. Hola a todos: Sigo batallando con este código. El problema que tengo entre otros es que al agregar el primer producto al carrito de compras, ...
  #1 (permalink)  
Antiguo 21/05/2009, 18:52
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Pregunta No me guarda el primer articulo que agrego

Hola a todos:

Sigo batallando con este código. El problema que tengo entre otros es que al agregar el primer producto al carrito de compras, aparece agregado cuando lo visualizo pero al agregar el segundo desaparece el primero, aunque si guarda el tercero, cuarto, etc. Este es mi código:

Código PHP:
<?
  
include ('func.php');
   
session_start();
 if(
$new)
  {
     if(!
session_is_registered("cart"))
    {
      
$cart = array();
      
$_SESSION['cart'] = $cart;
      
//$items = 0;
      
$_SESSION['items'] = $items;
      
//$total_price = "0.00";
      
$_SESSION['total_price'] = $total_price;
    }
    }
    if(
$cart[$new]) {
      
$cart[$new]++;
      }
    else {
      
$cart[$new] = 1;
    
$total_price calculate_price($cart);
    
$items calculate_items($cart);
  }
  if(
$save)
  {
    foreach (
$cart as $sku => $qty)
    {
      if($
$sku=="0") {
        unset(
$cart[$sku]);
        }
      else {
        
$cart[$sku] = $$sku;
    }
    
$total_price calculate_price($cart);
    
$items calculate_items($cart);
  }
  }
  
do_html_header("Tu carro de compra");
  if(
$cart&&count($cart)) {
    
display_cart($cart);
    }
  else
  {
    echo 
"<p>No hay artículos en tu carro";
    echo 
"<hr>";
  }
  
$target "index.php";
  
display_button("checkout.php""go-to-checkout""Go To Checkout");
  
display_button($target"continue-shopping""Continue Shopping");
  
?>
De verdad que lo he visto mil veces y no lo entiendo, por favor si pueden ayudarme un poco se los agradezco.
  #2 (permalink)  
Antiguo 21/05/2009, 19:03
 
Fecha de Ingreso: marzo-2009
Mensajes: 21
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: No me guarda el primer articulo que agrego

supongo que tienes un identificador para cada producto, prueba lo siguiente: vacia la tabla de los productos que agregas y agregalos nuevamente.
  #3 (permalink)  
Antiguo 21/05/2009, 19:06
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: No me guarda el primer articulo que agrego

gracias aradur pero no entiendo el porque de hacer eso ¿¿¿????
  #4 (permalink)  
Antiguo 21/05/2009, 19:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 21
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: No me guarda el primer articulo que agrego

para que la BD parta del identificador 0, 1, 2, 3, 4 si tenias el identificador 2 ocupado ya no lo va a reempazar el script a menos que tu se lo ordenes con un codigo, solo eso ;) autoincrement significa siempre ir sumando uno si tenias el 2 ocupado y lo borraste no se guardara el 2 denuevo sino pasara al 3, 4, 5, 6, 7,8,...,n entiendes?, solo es para eliminar todo registro de las tablas y partir de cero.
  #5 (permalink)  
Antiguo 21/05/2009, 20:46
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: No me guarda el primer articulo que agrego

Aradur hice lo que me indicaste y me sigue dando el mismo problema. no entiendo porque no guarda el primer producto que agrego al carrito. Algo del código está mal y creo que es en esta parte:

Código PHP:
if($cart[$new]) { 
      
$cart[$new]++; 
      } 
    else { 
      
$cart[$new] = 1
    
$total_price calculate_price($cart); 
    
$items calculate_items($cart); 
  } 
Este código lo copie de un tutorial y según lo que entiendo es esto:

si es un producto nuevo se incrementa, de lo contrario $cart[$new] = 1; No sé el porque de esto último.

No entiendo mucho que es lo que hago aqui. Por favor agradezco si me pueden dar una pequeña explicación.... Gracias.

Última edición por kimmy; 21/05/2009 a las 21:18
  #6 (permalink)  
Antiguo 21/05/2009, 21:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: No me guarda el primer articulo que agrego

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
  1. // if(!session_is_registered("cart")) Cambia este if por las siguientes tres lineas
  2.     if(isset($_SESSION['cart']))
  3.         $cart = $_SESSION['cart'];
  4.     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 original
  1. if(isset($cart[$new])) // Si ya existe el producto en el carro
  2.         $cart[$new]++; // Se incrementa en 1
  3.     else // Si no se ha agregado al carro
  4.         $cart[$new] = 1;  // Se agrega con 1
  5.  
  6.     // Siempre se realiza el calculo al agregar productos
  7.     $total_price = calculate_price($cart);
  8.     $items = calculate_items($cart);

Al terminar de procesar el carro no olvides reintegrarlo a la sesion:
$_SESSION['cart'] = $cart;
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 21/05/2009, 21:57
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: No me guarda el primer articulo que agrego

Hola Triby, mil gracias. Lo puse todo como me indicaste pero sigo teniendo problemas porque el primer poducto lo agrega y al introducir el segundo producto borra el primero. Sin embargo después si deja guardado el segundo y puede guardar los siguientes. El lio es con el primero.

Otra cosa a que te refieres con:
Cita:
Al terminar de procesar el carro no olvides reintegrarlo a la sesion:
$_SESSION['cart'] = $cart;
Gracias por tu ayuda siempre
  #8 (permalink)  
Antiguo 21/05/2009, 23:16
 
Fecha de Ingreso: marzo-2009
Mensajes: 21
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: No me guarda el primer articulo que agrego

[QUOTE=Triby;2924664]Kimmy

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 original
  1. if(isset($cart[$new])) // Si ya existe el producto en el carro
  2.         $cart[$new]++; // Se incrementa en 1
  3.     else // Si no se ha agregado al carro
  4.         $cart[$new] = 1;  // Se agrega con 1
  5.  
  6.     // Siempre se realiza el calculo al agregar productos
  7.     $total_price = calculate_price($cart);
  8.     $items = calculate_items($cart);

concuerdo con Triby, podrias probar poniendo en 0 $cart[$new] = 1;

Código php:
Ver original
  1. if(isset($cart[$new])) // Si ya existe el producto en el carro
  2.         $cart[$new]++; // Se incrementa en 1
  3.     else // Si no se ha agregado al carro
  4.         $cart[$new] = 0;  // Se agrega con 1
  5.  
  6.     // Siempre se realiza el calculo al agregar productos
  7.     $total_price = calculate_price($cart);
  8.     $items = calculate_items($cart);
  #9 (permalink)  
Antiguo 22/05/2009, 21:52
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: No me guarda el primer articulo que agrego

No me sirve igual no me toma el primer producto agregado, cuando le hago un echo var_dump($cart); me da como resultado NULL.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:58.