Problema con arreglo asociativo
Publicado por Luis (53 intervenciones) el 21/09/2009 02:16:28
Es la primera vez que intento hacer un carro de compras en php y tengo un problema que no he podido solucionar y agradeceria mucho si alguien me ayuda ya que llevo varios buscando una solucion y no he podido hacer que funcione.
A continuacion muestro el codigo importante de la pagina detalle productos que es donde se encuentra la descripcion de los productos y el boton para añadir al carro, con el cual lo q hago es que recargo la pagina para enviden los datos que obtengo de la base de datos a traves de campos ocultos.
Luego tengo el siguiente codigo con el cual intento tener un contador en una variable de sesion que me permita moverme a la siguiente posicion del arreglo $itemsEnCesta (lo cual no es estoy muy seguro de que sea necesario ya que no se si la proxima vez que se pase por esta pagina se sustituye el primer valor introducido en el arreglo)
if((isset($_SESSION['contador'])) && (isset($_POST["carro"]))){
$_SESSION['contador'] += 1;
}
if ((!isset($_SESSION['contador'])) && (isset($_POST["carro"]))) {
$_SESSION['contador'] = 0;
//echo "primero";
}
if (isset($_POST["carro"])) {
$modo=$_POST['modo'];
$title=$_POST['descripcion'];
$price=$_POST['precio'];
$item=$_POST['idSubProducto'];
if($modo == "nuevo"){
$contador = $_SESSION['contador'];
$itemsEnCesta = array($contador => array ( "codigo" => $item, "titulo" => $title, "precio" => $price ));
$_SESSION["itemsEnCesta"] = $itemsEnCesta;
header("Location:VerCompras.php");
}
En VerCompras.php tengo el siguiente codigo para mostrar el contenido de la variable de sesion itemsEnCesta.
if (isset($_SESSION['itemsEnCesta'])) {
print_r($_SESSION['itemsEnCesta']);
$session=$_SESSION['itemsEnCesta'];
if($_SESSION['itemsEnCesta'] > 0){
echo "<table border='1'>";
for($i=0;$i<=1;$i++){
if($i!=1){
echo "<tr>";
foreach($session[0] as $clave=>$valor){ // linea 211
echo "<th>".$clave."</th>\n";
}
echo "</tr>";
}
echo "<tr>";
foreach($session[$i] as $clave=>$valor){ // linea 217
echo "<td>".$valor."</td>\n";
}
echo "</tr>";
}
echo "</table>";
}
}else{
print "Su ha agredo ningun producto al carrito";
}
La primera vez que agrego un producto imprime en el navegador firefox
Array ( [0] => Array ( [codigo] => A1703Q [titulo] => APLIQUE MQ ESPIGA P/B [precio] => 52 ) )
Notice: Undefined offset: 1 in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 217
Warning: Invalid argument supplied for foreach() in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 217
codigo titulo precio
A1703Q APLIQUE MQ ESPIGA P/B 52
Y si añado otro producto me imprime
Array ( [1] => Array ( [codigo] => A1803Q [titulo] => APLIQUE MIAMI [precio] => 52 ) )
Notice: Undefined offset: 0 in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 211
Warning: Invalid argument supplied for foreach() in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 211
Notice: Undefined offset: 0 in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 217
Warning: Invalid argument supplied for foreach() in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 217
A1803Q APLIQUE MIAMI 52
No entiendo porque me salen estos errores. Por lo que he leido el undefined offset significa que estoy leyendo un indice del arreglo que no existe, pero he hecho todo lo que se me ha ocurrido para ver donde esta el error y no consigo la falla. Agradeceria cualquier ayuda que me puedan dar.
A continuacion muestro el codigo importante de la pagina detalle productos que es donde se encuentra la descripcion de los productos y el boton para añadir al carro, con el cual lo q hago es que recargo la pagina para enviden los datos que obtengo de la base de datos a traves de campos ocultos.
Luego tengo el siguiente codigo con el cual intento tener un contador en una variable de sesion que me permita moverme a la siguiente posicion del arreglo $itemsEnCesta (lo cual no es estoy muy seguro de que sea necesario ya que no se si la proxima vez que se pase por esta pagina se sustituye el primer valor introducido en el arreglo)
if((isset($_SESSION['contador'])) && (isset($_POST["carro"]))){
$_SESSION['contador'] += 1;
}
if ((!isset($_SESSION['contador'])) && (isset($_POST["carro"]))) {
$_SESSION['contador'] = 0;
//echo "primero";
}
if (isset($_POST["carro"])) {
$modo=$_POST['modo'];
$title=$_POST['descripcion'];
$price=$_POST['precio'];
$item=$_POST['idSubProducto'];
if($modo == "nuevo"){
$contador = $_SESSION['contador'];
$itemsEnCesta = array($contador => array ( "codigo" => $item, "titulo" => $title, "precio" => $price ));
$_SESSION["itemsEnCesta"] = $itemsEnCesta;
header("Location:VerCompras.php");
}
En VerCompras.php tengo el siguiente codigo para mostrar el contenido de la variable de sesion itemsEnCesta.
if (isset($_SESSION['itemsEnCesta'])) {
print_r($_SESSION['itemsEnCesta']);
$session=$_SESSION['itemsEnCesta'];
if($_SESSION['itemsEnCesta'] > 0){
echo "<table border='1'>";
for($i=0;$i<=1;$i++){
if($i!=1){
echo "<tr>";
foreach($session[0] as $clave=>$valor){ // linea 211
echo "<th>".$clave."</th>\n";
}
echo "</tr>";
}
echo "<tr>";
foreach($session[$i] as $clave=>$valor){ // linea 217
echo "<td>".$valor."</td>\n";
}
echo "</tr>";
}
echo "</table>";
}
}else{
print "Su ha agredo ningun producto al carrito";
}
La primera vez que agrego un producto imprime en el navegador firefox
Array ( [0] => Array ( [codigo] => A1703Q [titulo] => APLIQUE MQ ESPIGA P/B [precio] => 52 ) )
Notice: Undefined offset: 1 in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 217
Warning: Invalid argument supplied for foreach() in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 217
codigo titulo precio
A1703Q APLIQUE MQ ESPIGA P/B 52
Y si añado otro producto me imprime
Array ( [1] => Array ( [codigo] => A1803Q [titulo] => APLIQUE MIAMI [precio] => 52 ) )
Notice: Undefined offset: 0 in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 211
Warning: Invalid argument supplied for foreach() in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 211
Notice: Undefined offset: 0 in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 217
Warning: Invalid argument supplied for foreach() in C:\wamp\www\Pagi080909\public_html\VerCompras.php on line 217
A1803Q APLIQUE MIAMI 52
No entiendo porque me salen estos errores. Por lo que he leido el undefined offset significa que estoy leyendo un indice del arreglo que no existe, pero he hecho todo lo que se me ha ocurrido para ver donde esta el error y no consigo la falla. Agradeceria cualquier ayuda que me puedan dar.
Valora esta pregunta
0