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
