Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/05/2010, 09:34
mitrofan
 
Fecha de Ingreso: mayo-2010
Mensajes: 128
Antigüedad: 14 años
Puntos: 13
Carrito compra con arrays

Estoy intentando simular un carrito de compra solo con arrays, sin base de datos.

El código añade nombre del producto introducido (mediante un formulario) y la cantidad que queremos. Eso lo hace bien para uno o varios artículos.

El problema viene con el precio. Solo funciona para un artículo, si meto más productos el precio del artículo anterior lo machaca (no así la cantidad y nombre del artículo).

Paso el código a ver si alguién me puede echar una mano:

Cita:

<?php
include("datos.php"); // codigo donde se recogen los datos en varios arrays

//recogemos los valores del formulario y los asignamos variables


$preart = $_GET[preart]; //precio del articulo
$nomart = $_GET[nomart]; //Nombre del articulo
$cantidad = $_GET[cantidad]; //Cantidad de articulo



// Creamos sesiones dos sesiones, una la utilizaremos para calcular la cantidad de productos y el modelo del producto y otra para el precio de cada producto

$_SESSION[cantidadcesta]=$cantidadcesta;
$_SESSION[preciocesta]=$preciocesta;

// Si el nombre del articulo no esta vacio creamos un array con el primer articulo(modelo) introducido y lo recorremos todo el array con un bucle
// Le sumamos los valores del array anterior a la cantidad si ya habiamos introducido ese artículo(modelo).

if (isset($nomart))
{
$cantidadcesta[$nomart]=$cantidad;
foreach($cantidadcesta as $modelo => $unidad)
{
if($cantidadcesta == $modelo)
{
$cantidadcesta[$modelo]+=$cantidad;
$encontrado = 1;
}
}
if (!$encontrado)
{
$cantidadcesta[$nomart]=$cantidad;
}

}

// Si el precio no esta vacio metemos en un array el valor del primer precio intriducido. Recorremos con un bucle el array para ver si ya se había intorducido. En ese caso
// vamos sumando.

if (isset($preart))
{
$preciocesta[$cantidad]=$preart;

foreach($preciocesta as $model => $precio)
{
if ($preciocesta == $model)
{
$preciocesta[$model]+=$preart;
$econtrado2 = 1;
}

if (!$encontrado2)
{
$preciocesta[$nomart]=$preart;
}

}
}

// Coge de la array creado en datos.php los dos primeros datos y los muestra. Crea un formulario y pasa los datos que necesitamos (nomart, preart y cantidad)
// pasa mediante un campo oculto (hidden) para posteriormente mostrar el carrito.

if ($_GET[idmarca] == 0)
{
for ($i=0; $i<=1; $i++)
{
?>
<form action="<?=$PHP_SELF."?".$SID?>" method="get"/>
<fieldset> <legend> Compra portatil </legend> <br/>
<blockquote>
<h1><?php echo $articulo[$i];?></h1>
<p><?php echo $detalleart[$i];?></p>
<p>Precio: <?php echo $precioart[$i];?> &nbsp; Euros</p>
</blockquote>
<input type="hidden" name="nomart" value="<?php echo $articulo[$i]?>"/>
<input type="hidden" name="preart" value="<?php echo $precioart[$i]?>"/>
<input type="hidden" name="cantidad" value="1"/>
<input type="submit" name="Enviar" value="Comprar"/> <br/>
</fieldset>
</form>
<br/>
<?php
}
}

// Mostramos el carrito.

if(isset($cantidadcesta))
{
echo "<div>Cesta de compra es:</div><br/>";

foreach ($cantidadcesta as $modelo => $unidad)
{
if ($unidad>0)
{
//$preciototal+=$preart*$unidad;
echo "<div> Art&iacute;culo: ".$modelo."<br/>";
echo "<div> Unidades: ".$unidad." </div><br/>";
echo "<div> Precio: ".$precio."<br/>";
// echo "<div>---------------------------------------------</div>";
//}
}
}
}
?>