Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/01/2014, 11:01
rutame
 
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