Pregunta:
Fecha: 09-07-2017 16:15:43
(En Español)
Archivo de conexion "conexion2.php":
Archivo carro.php:
Aquí es donde me salen dos errores:
* Undefined variable $carrito
* Undefined offset 1234, "1234" es el código del producto que pretendo incluir al carrito.
Gracias de antemano.
Votos: 0 - Respuestas: 3 - Vistas: 11 Compartir en: Google Facebook Twitter LinkedIn Link
Error: Undefined variable y undefined offset[Resuelta]
Saludos, les comento que estoy desarrollando una tienda en línea, en el primer archivo muestro la lista de productos, el código es este:Archivo de conexion "conexion2.php":
<?php function conectar() { try { $con = new PDO("mysql:host=localhost;dbname=tienda", "root", ""); $con->query("SET NAMES 'utf-8'"); } catch (Exception $e) { echo "No se ha podido conectar con la base de datos"; exit(); } return $con; } function todos() { $con = conectar(); try { $resultado = $con->query("SELECT * FROM producto ORDER BY CodigoProd"); } catch (Exception $e) { echo "La consulta no se ha realizado"; exit(); } $productos = $resultado->fetchAll(PDO::FETCH_ASSOC); return $productos; } ?>
<?php include("conexion2.php"); function portada23($producto_id, $producto){ $salida = ""; $salida = $salida . '<div class=" col-lg-4">'; $salida = $salida . '<img src="/' . $producto["img"] . '" alt="' . $producto["NombreProd"] . '" class="img-rounded">'; $salida = $salida . '<p>' . utf8_encode($producto["NombreProd"]) . '</p>'; $salida = $salida . '<p><a class="btn-danger" href="carro.php?action=add&id='. $producto["CodigoProd"] .'">Comprar</strong> </a></p>'; $salida = $salida . '</div>'; return $salida; } $productos = todos(); foreach ($productos as $producto_id => $producto) { echo portada23($producto_id, $producto); } ?>
Archivo carro.php:
<?php session_start(); ?> <?php include("conexion2.php"); ?> <?php if (isset($_SESSION['carrito'])) { $carrito = $_SESSION['carrito']; // nombre de sesion } if (isset($_GET['id'])) { $sessionProducto_id = $_GET['id']; // recuperamos la id del producto } if (isset($_GET['action'])) { $action = $_GET['action']; // recuperamos la accion que vamos a realizar } // switch con las acciones a realizar switch ($action) { case 'add': $carrito[$sessionProducto_id]++; // sumamos cantidad al producto con la id de la ruta break; case 'remove': $carrito[$sessionProducto_id]--; // restamos cantidad al producto con la id de la ruta if ($carrito[$sessionProducto_id] == 0) { unset($carrito[$sessionProducto_id]); // si la cantidad es cero lo eliminamos directamente } break; case 'empty': unset($carrito); // vaciamos el carrito break; } ?> <?php if (!$carrito) { echo '<table border=\"1\" padding=\"4\" width=\"40%\">'; foreach ($carrito as $sessionProducto_id => $cantidad) { try { $con = conectar(); $resultado = $con->query("SELECT NombreProd, CodigoProd, descripcion, precio FROM producto WHERE CodigoProd = '$sessionProducto_id'"); } catch (Exception $e) { echo "No se ha podido conectar con la base de datos"; exit(); } $productos = $resultado->fetchAll(PDO::FETCH_ASSOC); foreach ($productos as $producto_id => $producto) { // foreach 2 $precio = $producto["precio"]; $costo = $precio * $cantidad; $total = $total + $costo; echo "<tr>"; echo "<td align=\"center\">{$producto["NombreProd"]}</td>"; echo "<td align=\"center\">$cantidad <a href=\"$_SERVER[PHP_SELF]?action=remove&$sessionProducto_id\">X</a></td>"; echo "<td align=\"center\">$costo</td>"; echo "</tr>"; } } // final foreach 1 // mostramos el total echo "<tr>"; echo "<td colspan=\"2\" align=\"right\">Total</td>"; echo "<td align=\"right\">Total</td>"; echo "</tr>"; echo "<tr>"; echo "<td colspan=\"3\" align=\"right\"><a href=\"$_SERVER[PHP_SELF]?action=empty\" onclick=\"return confirm('Eliminar Productos?');\">Vaciar Carrito</a></td>"; echo "</tr>"; echo "<tr>"; echo "<td colspan=\"3\" align=\"right\"><a href=\"pago.php\">Comprar</a></td>"; echo "</tr>"; echo "</table>"; } // final if else { echo "No hay Productos en la cesta"; } ?> <a href="index2.php">Volver a la Página Principal</a>
Aquí es donde me salen dos errores:
* Undefined variable $carrito
* Undefined offset 1234, "1234" es el código del producto que pretendo incluir al carrito.
Gracias de antemano.
Votos: 0 - Respuestas: 3 - Vistas: 11 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 10-07-2017 06:08:32 Esto te esta indicando que la variable $carrito no esta declarada o definida, eso es porque condicionas la creacion de esta si hay otra creada ($_SESSION['carrito']), por ende debes indicar que valor va a contener esta variable en caso de que la variable de session no este declarada:
if(isset($_SESSION['carrito']){ $carrito = $_SESSION['carrito']; }else{ $carrito = ""; }
Votos: 3 - Link respuesta -
Fecha: 11-07-2017 13:33:13 No has declarado la variable $carrito como global, y la estás queriendo invocar dentro del bloque. Votos: 1 - Link respuesta
-
Fecha: 12-07-2017 08:31:01 Perfecto, gracias, lo relacionado con la variable $carrito ya se solucionó, aún falta el offset Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión