Foros del Web » Programando para Internet » PHP »

Eliminar duplicados y aumentar cantidad

Estas en el tema de Eliminar duplicados y aumentar cantidad en el foro de PHP en Foros del Web. Hola vengo a solicitarles un poco de su ayuda con un problema que tengo con un arreglo. La situacion es la siguiente, estoy haciendo mi ...
  #1 (permalink)  
Antiguo 24/04/2009, 02:46
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años
Puntos: 0
Pregunta Eliminar duplicados y aumentar cantidad

Hola vengo a solicitarles un poco de su ayuda con un problema que tengo con un arreglo.

La situacion es la siguiente, estoy haciendo mi propio carro de compra y ya estoy en los puntos finales, para ser sincero hubo momentos en los que me daba de topes, pero en fin, mi problema es a la hora de insertar articulos en la cesta ya que quiero evitar que se repitan y en vez de eso que al querer insertar un articulo ya existente este solo aumente en 1 la cantidad.

Como se comporta el sistema??? Bueno los valores que inserto en el arreglo se pasan via GET y luego los inserto de esta manera:

Código PHP:
case 'add':
       if (!
$cart
        {
          
$cart[] = array("ID"=>$id,"Cantidad"=>$cantidad,"Precio"=>$precio);
    } 
       else 
        {
     
array_push($cart,array("ID"=>$id,"Cantidad"=>$cantidad,"Precio"=>$precio));
        } 
Como pueden ver es algo muy sencillo lo que estoy haciendo y $cart es mi variable que contiene todo el arreglo.

Ahora bien utilizando print_r($cart); puedo ver como esta conformado el arreglo, que para darnos una idea quedaria de esta manera:

Código:
Array
(
    [0] => Array
        (
            [ID] => Articulo numero uno
            [Cantidad] => 1 
            [Precio] => 40.00
        )

    [1] => Array
        (
            [ID] => Articulo numero dos
            [Cantidad] => 1 
            [Precio] => 850.00
        )

    [2] => Array
        (
            [ID] => Articulo numero tres
            [Cantidad] => 1 
            [Precio] => 33.80
        )

    [3] => Array
        (
            [ID] => articulo numero uno
            [Cantidad] => 1 
            [Precio] => 40.00
        )

)
Lo que yo quiero es que en mi arreglo no se repita el articulo numero uno y que el que ya esta en el arreglo aumente la cantidad ( es decir +1) ya le estuve buscando y logre hacer algo enviando el indice del arreglo, con unset, con in_array y con array_search pero sinceramente aun no logro hacerlo.

Ojala que alguien pueda ayudarme y de ante mano gracias.
  #2 (permalink)  
Antiguo 24/04/2009, 11:42
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: Eliminar duplicados y aumentar cantidad

Tienes que hacerlo con matriz asociativa para facilitar las cosas:

Código php:
Ver original
  1. $productos = array(
  2.     'id-prod-1' => array(
  3.          'cantidad' => 1,
  4.          'precio' => 40
  5.     )
  6. );
  7.  
  8. $id = 'id-prod-2';
  9. $cantidad = 3;
  10. $precio = 20;
  11. if(isset($productos[$id])) {
  12.     $productos[$id]['cantidad'] += $cantidad;
  13.     // El precio no es necesario actualizarlo, se supone que es el mismo
  14. } else {
  15.     $productos[$id] = array(
  16.           'cantidad' => $cantidad,
  17.           'precio' => $precio
  18.     );
  19. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 25/04/2009, 22:25
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años
Puntos: 0
Respuesta: Eliminar duplicados y aumentar cantidad

Hola Triby, estuve revizando lo que me hiciste favor de comentar y avanze un poco mas pero la respuesta aun se me esta escapando. podrias darme tu opinion respecto al codigo siguiente y como evitar que se inserte el arreglo repetido?

Código PHP:
switch ($action
{
 case 
'add':if (!$cart//SI NO EXISTE CART O ESTA VACIA  
             
{
       
$cart[] = array("ID"=>$id,"Cantidad"=>$cantidad,"Precio"=>$precio);
                 } 
            else
            {
              
              
$y=0// CONTADOR
               
for($i=0$i<count($cart); $i++) 
               {
                if(
$cart[$y]['ID']==$id// LEO TODOS LOS ID Y CHEKO SI EXISTE UNO IGUAL A MI REFERENCIA
                 
{
                  
$cart[$y]['Cantidad']=$cart[$y]['Cantidad']+1// EN CASO DE EXISTIR SOLAMENTE LE SUMO 1
                 
}
                
$y++;
               }
                 
array_push($cart,array("ID"=>$id,"Cantidad"=>$cantidad,"Precio"=>$precio));
              
            }
            
            
            

   } 
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 18:05.