Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Carrito Compra PHP
Manual Carrito Compra PHP
www.desarrolloweb.com
(5 captulos)
Este cdigo lo hemos situado dentro del archivo librera del carrito, despus de la declaracin
de la clase.
Artculo por Miguel Angel Alvarez
Datos a utilizar
Para empezar, tenemos que llevar la cuenta del nmero de productos que se han introducido
en el carrito. En el momento de creacin del objeto carrito, el nmero de productos debe ser
igual a cero.
Tambin necesitaremos guardar los id_producto de cada uno de los productos que se vayan
introduciendo en el carrito. Lo haremos a travs del array $array_id_prod, que es una de las
propiedades del objeto.
Ahora bien, probablemente sea til guardar ms que los simples identificadores de los
productos. Si se guarda su precio y su nombre puede ser til para mostrar rpidamente esos
valores sin necesidad de acceder a la base de datos.
Para ello se utilizan otro par de arrays, que tambin se han creado como atributos del objeto
carrito. Estos son $array_nombre_prod, para almacenar los nombres de los productos y
$array_precio_prod, para guardar los precios de cada uno de los productos del carrito.
Artculo por Miguel Angel Alvarez
Es preferible empezar por ver los atributos que tendr la clase carrito, que ya adelantamos en
el captulo anterior.
//atributos de la clase
var $num_productos;
var $array_id_prod;
var $array_nombre_prod;
var $array_precio_prod;
tambin el identificador del producto a borrar o incluso puede ser que nos sea til crear un par
de funciones para borrar productos del carrito, una recibiendo la lnea del carrito y otra
recibiendo el identificador del producto. Para este ejemplo me resulta ms fcil recibir la lnea
en la que est ese producto en el carrito.
function elimina_producto($linea){
$this->array_id_prod[$linea]=0;
}
echo "</table>";
}
La funcin declara primero la variable suma donde se guardar la suma de importes de los
productos.
Se muestran todos los productos con un bucle que recorre las lneas del carrito, desde la
primera hasta el nmero de productos. En cada lnea del carrito se muestran sus datos,
teniendo cuidado porque si el identificador del producto era cero quera decir que ese producto
haba sido borrado del carrito. Adems, acumulamos en la variable suma el importe de todos
los productos del carrito que no han sido borrados previamente.
Todava dentro del bucle que recorre los productos del carrito, colocamos un enlace para que el
visitante pueda eliminar un producto. Hay que darse cuenta que el enlace para borrar un
producto indica como parmetro la lnea del carrito que se debe borrar, que era lo que nosotros
necesitbamos en la funcin creada para borrar los productos.
Ya fuera del bucle, imprimimos el importe total con la suma de los importes de los productos
que hemos ido acumulando durante el bucle.
Cdigo completo de la clase
Veamos a continuacin cmo quedara la clase carrito completa, para que no se nos pase
ningn detalle.
class carrito {
//atributos de la clase
var $num_productos;
var $array_id_prod;
var $array_nombre_prod;
var $array_precio_prod;
//constructor. Realiza las tareas de inicializar los objetos cuando se instancian
//inicializa el numero de productos a 0
function carrito () {
$this->num_productos=0;
}
//Introduce un producto en el carrito. Recibe los datos del producto
//Se encarga de introducir los datos en los arrays del objeto carrito
//luego aumenta en 1 el numero de productos
function introduce_producto($id_prod,$nombre_prod,$precio_prod){
$this->array_id_prod[$this->num_productos]=$id_prod;
$this->array_nombre_prod[$this->num_productos]=$nombre_prod;
$this->array_precio_prod[$this->num_productos]=$precio_prod;
$this->num_productos++;
}
//Muestra el contenido del carrito de la compra
//ademas pone los enlaces para eliminar un producto del carrito
function imprime_carrito(){
$suma = 0;
echo '<table border=1 cellpadding="3">
<tr>
<td><b>Nombre producto</b></td>
<td><b>Precio</b></td>
<td> </td>
</tr>';
for ($i=0;$i<$this->num_productos;$i++){
if($this->array_id_prod[$i]!=0){
Carrito de la compra en PHP: www.desarrolloweb.com/manuales/56/
Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
echo '<tr>';
echo "<td>" . $this->array_nombre_prod[$i] . "</td>";
echo "<td>" . $this->array_precio_prod[$i] . "</td>";
echo "<td><a href='eliminar_producto.php?linea=$i'>Eliminar producto</td>";
echo '</tr>';
$suma += $this->array_precio_prod[$i];
}
}
//muestro el total
echo "<tr><td><b>TOTAL:</b></td><td> <b>$suma</b></td><td> </td></tr>";
//total ms IVA
echo "<tr><td><b>IVA (16%):</b></td><td> <b>" . $suma * 1.16 . "</b></td><td> </td></tr>";
echo "</table>";
}
//elimina un producto del carrito. recibe la linea del carrito que debe eliminar
//no lo elimina realmente, simplemente pone a cero el id, para saber que esta en estado retirado
function elimina_producto($linea){
$this->array_id_prod[$linea]=0;
}
<br>
<br>
- <a href="ver_carrito.php">Ver carrito</a>
</body>
</html>
mete_producto.php
Esta pgina introduce el un producto en el carrito de la compra. Recibe los datos del producto
a introducir por la URL. Lo que hace es llamar al mtodo introduce_producto(), pasando los
datos del producto, que se reciben por GET.
<?
include("lib_carrito.php");
$_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"]);
?>
<html>
<head>
<title>Introduce Producto</title>
</head>
<body>
Producto introducido.
<br>
<br>
<a href="index.php">- Volver</a>
<br>
<br>
<a href="ver_carrito.php">- Ver carrito</a>
</body>
</html>
ver_carrito.php
La pgina que muestra el carrito es bsicamente una llamada al mtodo de la clase carrito que
se encarga de mostrar el contenido del carro de la compra y la suma de los precios de los
productos.
<?
include("lib_carrito.php");
?>
<html>
<head>
<title>Introduce Producto</title>
</head>
<body>
<?
$_SESSION["ocarrito"]->imprime_carrito();
?>
<br>
<br>
<a href="index.php">Volver</a>
</body>
</html>
eliminar_producto.php
Esta pgina recibe por GET el ndice del producto que se desea borrar. Con el ndice, se llama
al mtodo elimina_producto, que se encarga de marcar como eliminado el producto del carro.
<?
include("lib_carrito.php");
$_SESSION["ocarrito"]->elimina_producto($_GET["linea"]);
?>
<html>
<head>
<title>Introduce Producto</title>
</head>
<body>
Producto eliminado.
<br>
<br>
<br>
<a href="index.php">- Volver</a>
<br>
<br>
<a href="ver_carrito.php">- Ver carrito</a>
</body>
</html>