He restructurado todo el código, lo pongo aunque hay una sola cosa que falla y que me gustaría resolver:
Datos.php
Código PHP:
<?php
session_start();
$idmarca = array("1","2", "3", "4", "5", "6", "7");
$marca = array("Acer", "Asus", "Hp", "Lenovo", "Toshiba", "MSI", "Samsumg");
// Arrays con los detalles para cada producto
$acer = array("Acer Aspire 4500" => "Procesador T4400, 320 Gb disco duro, 4 Gb de memoria Ram", "Acer Ferrari RL" => "Procesador P8600, 320 Gb disco duro, 4 Gb de memoria Ram");
$asus = array("Asus LR500" => "Procesador P8700, 320 Gb disco duro, 4 Gb de memoria Ram", "Asus LR750" => "Procesador P8700, 500 Gb disco duro, 4 Gb de memoria Ram");
$hp = array("HP 4750" => "Procesador P8600, 320 Gb disco duro, 4 Gb de memoria Ram", "HP4800" => "Procesador T4400, 500 Gb disco duro, 4 Gb de memoria Ram");
$toshiba = array ("Toshiba 4320" => "Procesador T5800, 250 Gb disco duro, 4 Gb de memoria Ram");
$msi = array( "MSI CX5600" => "Procesador P8700, 320 Gb disco duro, 4 Gb de memoria Ram", "MSI CXS650" => "Procesador P8700, 320 Gb disco duro, 4 Gb de memoria Ram", "MSI CXS700"=> "Procesador P8500, 320 Gb disco duro, 4 Gb de memoria Ram");
$lenovo = array("Lenovo FXJ" => "Procesador T5800, 320 Gb disco duro, 4 Gb de memoria Ram", "Lenovo FXD" => "Procesador P8600, 320 Gb disco duro, 4 Gb de memoria Ram");
$samsung = array("Samsumg TRK" => "Procesador P8500, 320 Gb disco duro, 2 Gb de memoria Ram", "Samsung RK500" => "Procesador T5800, 320 Gb disco duro, 4 Gb de memoria Ram",
"Samsung RK550" => "Procesador P8700, 320 Gb disco duro, 4 Gb de memoria Ram");
//Array para los precios asociados al nombre del producto
$producto = array("Acer Aspire 4500" => "400", "Acer Ferrari RL" => "600", "Asus LR500" => "650", "Asus LR750" => "700", "HP 4750" =>699, "HP4800"=> "499", "Lenovo FXJ" => "599",
"Lenovo FXD" => "625", "Toshiba 4320" => "670", "MSI CX5600" => "549", "MSI CXS650" => "699", "MSI CXS700" => "670", "Samsumg TRK" => "680",
"Samsung RK500" => "570", "Samsung RK500" => "620", "Samsung RK550" => "670");
?>
Código marcas.php
Código PHP:
<?php
include("datos.php");
$preart = $_GET[preart];
$nomart = $_GET[nomart];
$cantidad = $_GET[cantidad];
$_SESSION[cantidadcesta]=$cantidadcesta;
include("arriba.php"); //Parte superior con CSSS
?>
<div id="contentwrap">
<div id="breadcrumb"><a href="cesta.php">Cesta</a> » <a href="http://www.free-css.com/">Somewhere</a></div>
<div id="content"> <span class="floatright"><img src="assets/images/icon_email.gif" /><img src="assets/images/icon_print.gif" /></span>
<h1>Portátiles online</h1>
<p> Venta de productos informáticos</p>
<div class="hr">
<hr />
</div>
<h1>Novedades</h1>
<p> </p>
<?php
//Creamos una función para pintar el nombre del producto, los detalles y el precio (aunque esto último no va).
function pintarportatiles($varmodelo)
{
foreach ($varmodelo as $modelo => $detalles)
{
?>
<form action="<?=$PHP_SELF."?".$SID?>" method="get"/>
<fieldset> <legend> Compra portatil </legend> <br/>
<blockquote>
<h1><?php echo $modelo;?></h1>
<p><?php echo $detalles;?></p>
<p>Precio: <?php echo $producto[$modelo];?> Euros</p>
</blockquote>
<input type="hidden" name="nomart" value="<?php echo $modelo;?>"/>
<input type="text" name="cantidad" value="1"/>
<input type="submit" name="Enviar" value="Comprar"/> <br/>
</fieldset>
</form>
<br/>
<?php
}
}
if ($_GET[idmarca] == 0)
{
pintarportatiles($acer);
}
if ($_GET[idmarca] == 1)
{
pintarportatiles($asus);
}
if ($_GET[idmarca] == 2)
{
pintarportatiles($hp);
}
if ($_GET[idmarca] == 3)
{
pintarportatiles($lenovo);
}
if ($_GET[idmarca] == 4)
{
pintarportatiles($toshiba);
}
if ($_GET[idmarca] == 5)
{
pintarportatiles($msi);
}
if ($_GET[idmarca] == 6)
{
pintarportatiles($samsung);
}
?>
</div>
<?php
//Introducimos los valores de la sesión en un array de sesion con el nombre y la cantidad del producto
$cantidadcesta[$nomart]=$cantidad;
if(isset($cantidadcesta))
{
echo "<div>Cesta de compra es:</div><br/>";
//Recorremos el array y lo mostramos. Para mostrar el precio recorremos a la tabla producto que tenomos en datos.php
foreach ($cantidadcesta as $modelo => $unidad)
{
if ($unidad>0)
{
echo "<div> Producto: ".$modelo."<br/>";
echo "<div> Unidades: ".$unidad." </div>";
echo "<div> Precio: ".$producto[$modelo]."X".$unidad." = ".$producto[$modelo]*$unidad."</div><br/>";
}
}
}
include("abajo.php"); // Parte inferior con CSS
?>
La cesta funciona bien. Lo único que cuando se muestran los datos de los productos (antes de añadirlo a la cesta), el precio no lo coge ya que el array que recorre ($acer, $hp...) es de dos dimensiones, y por lo que sea no lo pilla de la tabla productos. Imagino que en vez de foreach se puede hacer un for y crear dos tablas más para cada producto. Por ejemplo:
$acer=array("acer ferrari", "Acer aspire".....);
$precioacer=array("400", "600".....);
$detalleacer=array("procesador tal.....", "porecsado, disco duro....");
for ($i=0; $i<count($acer) $i++)
{
echo "producto: ".$acer[$i];
echo "detalles: ".$detalleacer[$i];
echo "precio: ".$precioacer[$i];
}
Sin embargo también se me había ocurrido hacerlo todo en un array tridimensinal, asi queda todo en una variable:
$acer = array("Acer Aspire 4500" =>
array(detalles => "Procesador T4400, 320 Gb disco duro, 4 Gb de memoria Ram", precio => "400"),
"Acer Ferrari RL" =>
array(detalles=> "Procesador P8600, 320 Gb disco duro, 4 Gb de memoria Ram", precio =>"600")
);
Pero aqui viene la pregunta, ¿como se podría recorrer un array así para que me muestre todos los valores?