Ayuda con carrito

Hola, tengo el carrito de webestilo (modificado) y funciona bien.
Carrito webestilo:
<?
session_start();
session_register('itemsEnCesta');
if ($_POST["producto"])
{ //comprobamos si existe algún producto
if (!isset($itemsEnCesta)) {
$items["producto"]=$_POST["producto"];
$items["cantidad"]=$_POST["cantidad"];
$items["cuotas"]=$_POST["cuota"];
$itemsEnCesta= array($items); }
else { //recorremos su contenido, con foreach, y si encontramos un artículo igual, añadimos la cantidad...
foreach($itemsEnCesta as $ind => $item_v) {
if ($item_v["producto"]==$_POST["producto"]) {
$itemsEnCesta[$ind]["cantidad"]+=$_POST["cantidad"];
$encontrado=1; }
} // Si no lo encontramos, es un nuevo artículo, por lo tanto, añadimos el nuevo producto con la correspondiente cantidad a compra
if (!$encontrado) {
$items["producto"]=$_POST["producto"];
$items["cantidad"]=$_POST["cantidad"];
$items["cuotas"]=$_POST["cuota"];
$itemsEnCesta[]=$items; }
}
}?>
<html><body>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
producto <input type="text" name="producto" size="20"><br>
cantidad <input type="text" name="cantidad" size="5"><br>
cuotas <input type="text" name="cuota" size="5"><br>
<input type="submit" value="Añadir a la cesta"><br>
</form>
<?
if (isset($itemsEnCesta)) {
echo'El contenido de la cesta de la compra es:<br>';
foreach($itemsEnCesta as $k => $items) {
foreach($items as $tipo => $value) {
echo $tipo.': '.$value.' '; }
echo "<br>";
}
}
?>
</body></html>
hasta aki todo bien, en mis aplicaciones abro una sesion asi:
sesion.php
<?php
include ("conexx.php");
session_start(); //defino una sesion y guardo datos
$_SESSION['compra']="si";
header ("Location: carrito.php? Cod=$cod&calculo=$calculo&resultado=$resultado"); //envia 3 variables a carrito.php
?>
de sesion.php traigo las 3 variables deberia añadir a mi carrito:
carrito.php
<?php
include ("conexx.php"); // se conecta a la BD
session_start();
$compra=$_SESSION['compra']; // asignamos a $variable la variable de la session áctiva.
?>
<html>
<head>
<title></title>
</head>
<body>
<?php
// la sesion ya esta abierta y compra="si"
if (($compra)=="si"){
//de aki para abajo aplico carrito webestilo(o al menos lo intento)
if ($_POST["$cod"])
{ //comprobamos si existe algún articulo
if (!isset($compra)) {
$items["producto"]=$_POST["$cod"];
$items["cuotas"]=$_POST["$calculo"];
$items["resultado"]=$_POST["$resultado"];
$compra= array($items); }
else { //recorremos su contenido, con el foreach, y si encontramos un artículo igual, añadimos las cuotas...
foreach($compra as $ind => $item_v) {
if ($item_v["producto"]==$_POST["$cod"]) {
$compra[$ind]["cuotas"]+=$_POST["$calculo"];
$encontrado=1; }
} // Si no lo encontramos, es un nuevo artículo, por lo tanto, añadimos el nuevo producto con la correspondiente cuota a compra
if (!$encontrado) {
$items["producto"]=$_POST["$cod"];
$items["cuotas"]=$_POST["$calculo"];
$items["resultado"]=$_POST["$resultado"];
$compra= array($items); }
}}
// ***** aki deberia mostrar la compra*********
if

1 respuesta

Respuesta
1
Primero que nada, t recomiendo tener el manual de PHP a la mano a la hora de programar para tener la referencia sobre las funciones.
Tu problema es que estas reverenciando el foreach sobre la variable $compra, la cual le asignaste el valor de $_SESSION ['compra'], ¿Cuánto vale compra? Vale "si" lo cual es una cadena de texto, y la función foreach solo aplica a variables tipo arreglo, realmentes ese es el error: que la variable $compra no es una arreglo. Según tu código debería operarse sobre la variable: $items
Saludos !
Atentamente: Mack
----------------------------------------
Al principio era UNIX, y UNIX habló y dijo:
"Hello World\n",
no dijo: "Hello New Jersey\n",
ni "Hello USA\n"...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas