Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Crear y almacenar array bidimensional

Estas en el tema de Crear y almacenar array bidimensional en el foro de PHP en Foros del Web. Buenos días a todos! Estoy intentando hacer un carrito de compras con arrays de session y no entiendo algunas cosas. Primero, cuando creo un array ...
  #1 (permalink)  
Antiguo 27/01/2014, 11:01
 
Fecha de Ingreso: agosto-2008
Ubicación: Canarias, España - París, Francia
Mensajes: 105
Antigüedad: 16 años, 3 meses
Puntos: 3
Crear y almacenar array bidimensional

Buenos días a todos!

Estoy intentando hacer un carrito de compras con arrays de session y no entiendo algunas cosas.

Primero, cuando creo un array llamado carrito, lo muestra como un array unidimensional tal que así:
Código PHP:
Ver original
  1. var_dump($carrito); // El volcado de carrito, nótese que falta el índice del array
  2. array (size=5)
  3.   'idpie' => string '28' (length=2)
  4.   'nompie' => string 'Muelle Helecoidal' (length=17)
  5.   'precio' => string '41.00' (length=5)
  6.   'cantidad' => string '1' (length=1)
  7.   'coste' => float 41

Pero cuando añado otro pruducto, si que me saca el array con índice, que indica que ya es bidimensional.
Código HTML:
Ver original
  1. array (size=6)
  2.   'idpie' => string '28' (length=2)
  3.   'nompie' => string 'Muelle Helecoidal' (length=17)
  4.   'precio' => string '41.00' (length=5)
  5.   'cantidad' => string '1' (length=1)
  6.   'coste' => float 41
  7.   0 =>
  8.     array (size=5)
  9.       'idpie' => string '27' (length=2)
  10.       'nompie' => string 'Filtro Aceite No metálico' (length=26)
  11.       'precio' => string '6.00' (length=4)
  12.       'cantidad' => string '1' (length=1)
  13.       'coste' => float 6

El código que estoy usando es este:
Código PHP:
Ver original
  1. include 'conecta.php';
  2.  
  3. if(!empty($_POST['idpie'])){$idpie = $_POST['idpie'];}
  4.  
  5. $sql = mysql_query("SELECT nompie,pvp
  6.                     FROM pieza
  7.                     WHERE idpie = '$idpie' ")or die(mysql_error());
  8.  
  9. $row = mysql_fetch_array($sql);
  10.  
  11. if(!isset($_POST['cantidad'])){ $cantidad = 1;}else{$cantidad = $_POST['cantidad'];}
  12.  
  13. // Asignar valores de la fila sql a variables
  14. $nompie = $row['nompie'];
  15. $precio = $row['pvp'];
  16. $coste = $precio * $cantidad;
  17.  
  18. //Creamos la matriz asignandoselo a la variable
  19. $carrito = array();
  20.         $carrito['idpie'] = $idpie;
  21.         $carrito['nompie'] = $nompie;
  22.         $carrito['precio'] = $precio;
  23.         $carrito['cantidad'] = $cantidad;
  24.         $carrito['coste'] = $coste;
  25.  
  26.        
  27. echo "LA ARRAY CARRITO ANTES DE METER EN SESSION. <br>";
  28. echo "*****************************************************************************************";
  29. var_dump($carrito);
  30. echo "*****************************************************************************************";
  31. echo "<br>";
  32. // Comprobaciones
  33. if(!isset($_SESSION['carrito']))
  34. {
  35.     $_SESSION['carrito'] = $carrito;
  36.    
  37. }
  38. elseif(isset($_SESSION['carrito']))
  39. {
  40.     $carrito = $_SESSION['carrito'];
  41.    
  42.     //foreach ($carrito as $key => $pieza)
  43.     //{
  44.         if(in_array($idpie, $carrito))
  45.         {
  46.             $cant = $carrito['cantidad'];
  47.             echo "Cant: ".$cant;
  48.             echo "<br>";
  49.             $cant++;
  50.             $carrito['cantidad'] = $cant;
  51.             $carrito['coste'] = $cant * $carrito['precio'];
  52.             echo "<br>";
  53.             echo "IdPie: ".$carrito['idpie'];
  54.             $_SESSION['carrito'] = $carrito;
  55.         }
  56.         else
  57.         {
  58.             $carrito['idpie'] = $idpie;
  59.             $carrito['nompie'] = $nompie;
  60.             $carrito['precio'] = $precio;
  61.             $carrito['cantidad'] = $cantidad;
  62.             $carrito['coste'] = $coste;
  63.             array_push($_SESSION['carrito'], $carrito);
  64.  
  65.  
  66.         }
  67.  
  68.        
  69.     //}
  70.  
  71. }
  72.  
  73.  
  74. echo "VOLCADO DE LA <strong>SESSION</strong> CARRITO<br />";
  75. var_dump($_SESSION['carrito']);
  76. echo "<br>";
  77. echo date("D, d M Y h:m:s");

A ver si alguien me lo puede explicar de forma didáctica para que lo entienda pues me trae loco, porque lo tengo y parece fácil, pero no me sale jooorrr

Muchas gracias
  #2 (permalink)  
Antiguo 27/01/2014, 11:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Crear y almacenar array bidimensional

La primera vez que creas el arreglo de sesión no debes copiar la estructura, debes crear un array con un sólo elemento en su lugar, eso facilitaría las cosas:

Código PHP:
Ver original
  1. $foo = array('candy' =>'BAR');
  2.  
  3. // MAL
  4. $bar = $foo;
  5. $bar []= array('xDD' => 'FTW');
  6. print_r($bar);
  7.  
  8. // BIEN
  9. $bar = array($foo);
  10. $bar []= array('xDD' => 'FTW');
  11. print_r($bar);

Analiza ambos códigos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: arrays, bidimensionales, carritodecompras
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 10:00.