Utilización de la clase carrito en PHP

Valoración del artículo:
Ejemplos sencillos de utilización de las librerías del carrito de la compra.
Publicado: 01/10/04
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Para ilustrar el funcionamiento de la clase carrito, vamos a realizar unas páginas donde podremos utilizarla. Realmente son unas páginas sencillas, el trabajo duro ya se realizó al crear el propio carrito.
index.php
La página de inicio muestra una lista de objetos para comprar. Esta lista está completamente inventada sobre la marcha, pero en nuestros ejemplos lo lógico sería que la extrajéramos de una base de datos.
<?
include("lib_carrito.php");
?>

<html>
<head>
    <title>Trabajando con el carrito</title>
</head>

<body>


<a href="mete_producto.php?id=12&nombre=silla+modelo+jupiter&precio=80">Silla modelo jupiter 80 euros</a>
<br>
<br>
<a href="mete_producto.php?id=16&nombre=mesa+camilla+oferta&precio=29">Mesa camilla en oferta 29 euros</a>
<br>
<br>
<a href="mete_producto.php?id=18&nombre=Silla+oficina&precio=102">Silla oficina 102 euros</a>
<br>
<br>
<a href="mete_producto.php?id=98&nombre=Aparador+cocina+blanco&precio=200">Aparador cocina blanco 200 euros</a>
<br>
<br>
<br>
- <a href="ver_carrito.php">Ver carrito</a>
</body>
</html>


mete_producto.php

Esta página 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 método 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 página que muestra el carrito es básicamente una llamada al método 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 página recibe por GET el índice del producto que se desea borrar. Con el índice, se llama al método 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>

Comentarios
Fueron enviados 16 comentarios al artículo
4 comentarios no revisados
12 comentarios revisados:
Por: Luis
03/1/05
Este carrito es de los más sencillos que he encontrado en los Manuales de PHP, y además funciona a la perfección. Solo le falta terminar el artículo: ¿Cómo envía el cliente la peticion de compra al servidor, una vez que ha terminado de llenar su carrito?.
Por: Jose
20/4/05
Muy practico este manual.
Pero ciertamente de nada sirve si no puedes enviar el resultado al servidor o por mail.
Si alguien puede indicarme alguna referencia de como puedo hacer que se envie por mail... Lo agradecería.

operadormail@ono.com
Gracias
Por: Elias Schmidt
14/12/05
Hola, primeramente de agradezco Miguel por haber expuesto un carro tan bueno como este, esta COMPLETO, lo que le falta seria lo que cada uno quiere hacer luego con este carro, por lo tanto no le falta nada, yo por mi parte lo estudie y lo adapte modificando algunos códigos para que se envié por mail la solicitud de la compra, solamente lo que se tiene que hacer es agregar un par de líneas como ser:
echo '<FORM ACTION="send.php" METHOD="POST">
al archive lib_carrito.php y crear el archive send.php que en este manual lo puedes encontrar.
Nuevamente MUCHAS GRACIAS
Por: Igor André Guerra
18/12/05
Hola yo estoy mas o menos creando esa posibilidad leyendo el array los datos e introduciendoloes en una tabla dentro de la base de datos llamada pedidos. Ahi puedo ver el numero de cliente asignado a el usuario que confirma el pedido, y de esa manera poner el marcha el pedido y poder realizarle la factura.

Si quieres echarle un vistazo a lo que estoy haciendo gracias todo a desarrolloweb claro, mas que nada porque gracias a todos los manuales que he encontrado en la web he podido realizar cosas muy majas la verdad.

La pagina es http://www.northsystems.org y no esta del todo acabado pero se puede echar un vistazo al registro de usuarios, o por ejmplo al funcionamiento del carrito. Nada mas que tenga el envio del carrito a la BD lo pondre por aqui.

Gracias a todos y sobre todo a tod@s.
Por: Noe
21/12/05
Hola he probado el carrito y jala de maravilla e incluso hize unas modificaciones y esta de lujo, pero tengo el problema de que me envie la compra total por email a mi y con respuesta al cliente que solicito la compra, he logrado enviar los correos a mi a al cliente pero al revisar el correo no aparece la compra que realizo el cliente, solo los datos se pide al cliente, ojala y alguien me pueda ayudar a resolver esto y una vez que este terminado, les pondre el carrito con las modificaciones para que lo tomen como ejemplo.

Atentamente

Noe
Por: Rebeca
20/7/06
Hola si necesitas que te envie la informacion al mail, existe una funcion que lo hace, funcion mail(), es muy sencillita de usar, aunque supongo que ya la conoceras, si necesitas ayuda puedes ponerte en contacto conmigo, acabo de utilizarla para un formulario de una empresa, y ahora estoy mirando como poner un carrito de la compra.
Un saludo
Por: Roberto Buil Artal
06/9/06
Bueno como veo no soy el único que ha tenido verdaderos problemas para poder almacenar el carrito en una variable y así meterlo en la base de datos.
Pero gracias a esta URL que explica las clases http://www.desarrolloweb.com/articulos/1913.php
a mi amigo Sergi y a varias horas he creado una función que os puede servir a los novatos como yo.

//EN lib_carrito.php
//declaro 2 variables nuevas
var $codref;
var $suma;

//añado una función
function guarda_carrito(){
global $codref;
global $suma;

$suma = 0;
for ($i=0;$i<$this->num_productos;$i++){
if($this->array_id_prod[$i]!=0){
$this->codref.=$this->array_id_prod[$i] . "&nbsp;".$this->array_precio_prod[$i]. "<BR>";
$suma += $this->array_precio_prod[$i];

}
}
$this->suma=$suma*1.16;


}

//Y para finalizar las recupero desde mi página de confirma.php y las almaceno en variables para meter en la BD.

$_SESSION["ocarrito"]->guarda_carrito();
$pedido=$_SESSION["ocarrito"]->codref;
$total=$_SESSION["ocarrito"]->suma;

Espero que os sirva de algo.
Agradezco a los desarrolladores de esta web las explicaciones del código, e imagino que si no lo han dado completo es para evitar la comercialización con su herramienta. Pero aqui estamos los usuarios para ayudarnos entre todos.

Por: Logan
07/10/06
Acabo de descargar los archivos de esta miniaplicación, veo que esta muy bien diseñado, algo sencillo para los usuarios que no somos expertos en php, analizaré bien el codigo y espero pronto publicar el codigo completo para los usuarios que no saben como mandar los datos al servidor, una vez mas Gracias a Miguel por aportarnos este tipo de manuales que nos ayudan a todos.
Por: Fer
14/12/06
Si no te permite el servidor PHP enviar emails puedes crear una tabla con los pedidos y darlos de alta con toda la información, guardando los datos en el servidor.
Por: KRISS
03/9/07
Felicidades por el manual, realmente ayuda mucho, por lo menos a la gente, que como yo, nos estamos iniciando en php.

Pero a la hora de ejecutarlo tenia el mismo problema que ya se a comentado anteriormente. Añadia bien cosas al carrito, pero al mostralo volvia a comenzar desde cero.
Después de darle muchas vueltas creo k he dado con la solución, por lo menos a mi me funciona.
Simplemente hay que poner al comienzo de todas las paginas(metercarrito, vercarrito, eliminarcarrito):

include("lib_carrito.php);
session_start();

Un saludo.

kaotic
Amontonar productos en carrito
14/5/09
Buenos dias, el carrito m ha servido de mucho, tengo una duda, me gustaria saber como pudo hacer para que s un cliente compra un mismo producto varias veces, conseguir que me marcara el numero de productos de ese tipo que hay, un ejemplo seria:

Modelo Cantidad Precio
Silla 5 200

Gracias anticipadas

harry22
el link esta roto
03/6/09
no puedo descargar los archivos

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo