Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/01/2014, 15:33
rutame
 
Fecha de Ingreso: agosto-2008
Ubicación: Canarias, España - París, Francia
Mensajes: 105
Antigüedad: 15 años, 8 meses
Puntos: 3
Buscar con in_array en arrays bidimensionales

Buenas noches a todos!

Tengo este código en el que busco si un producto ya se ha añadido por el $idpie para que, en caso afirmativo, solo incremente la cantidad y el coste del producto. Lo estoy recorriendo con un foreach pero hace cosas extrañas. Pego código.
Código PHP:
Ver original
  1. include 'conecta.php';
  2.  
  3. //print_r($_POST);
  4.  
  5. if(!empty($_POST['idpie'])){$idpie = $_POST['idpie'];}
  6.  
  7.  
  8. //$carrito = "carrito";
  9. //if(!isset($contador)){$contador = 0;}
  10.  
  11. $sql = mysql_query("SELECT nompie,pvp
  12.                     FROM pieza
  13.                     WHERE idpie = '$idpie' ")
  14.                     or die(mysql_error());
  15.  
  16. $row = mysql_fetch_array($sql);
  17.  
  18. if(!isset($_POST['cantidad'])){
  19.     $cantidad = 1;
  20. }
  21. else{
  22.     $cantidad = $_POST['cantidad'];
  23. }
  24.  
  25. $nompie = $row['nompie'];
  26. $precio = $row['pvp'];
  27. $coste = $precio * $cantidad;
  28.  
  29. //Creamos la matriz asignandoselo a la variable
  30. $nuevoProducto = array();
  31.  
  32. // Añadimos las columnas de la matriz array
  33. $nuevoProducto['idpie'] = $idpie;
  34. $nuevoProducto['nompie'] = $nompie;
  35. $nuevoProducto['precio'] = $precio;
  36. $nuevoProducto['cantidad'] = $cantidad;
  37. $nuevoProducto['coste'] = $coste;
  38.  
  39. // Verificado
  40. if(!isset($_SESSION['carrito'])){
  41.     $_SESSION['carrito'] = array();
  42. }
  43.  
  44. if(isset($_SESSION['carrito']))
  45. {
  46.         if(!empty($_SESSION['carrito']))
  47.         {
  48.             foreach ($_SESSION['carrito'] as $key => $value)
  49.             {
  50.                 if(in_array($idpie, $_SESSION['carrito'][$key])){
  51.                     $cant = $_SESSION['carrito'][$key]['cantidad'];
  52.                     $cant++;
  53.                     $_SESSION['carrito'][$key]['cantidad'] = $cant;
  54.                     $_SESSION['carrito'][$key]['coste'] = $cant * $_SESSION['carrito'][$key]['precio'] ;
  55.                 }
  56.                 if (!in_array($idpie, $_SESSION['carrito'][$key]))
  57.                 {
  58.                     echo "Estoy en array_push no encuentra, clave $key y idpie: $idpie";
  59.                     array_push($_SESSION['carrito'], $nuevoProducto);
  60.                 }
  61.  
  62.             }
  63.         }
  64.         else{
  65.             array_push($_SESSION['carrito'], $nuevoProducto);
  66.         }
  67.  
  68.         echo "Estoy dentro<br>";
  69.         var_dump($_SESSION['carrito']);
  70. }

El primer producto lo introduce bien, si sigo poniendo el mismo producto, se incrementa la cantidad, pero cuando añado uno nuevo añade uno más dos ???

Alguien me puede ayudar?

Muchas gracias