Duda carrito de la compra en PHP

4 views
Skip to first unread message

eva...@gmail.com

unread,
Jul 12, 2010, 2:51:28 PM7/12/10
to PHP-Ovillo
Hola a tod@s,

Estoy desarrollando un carrito de la compra y me surge la duda de
donde almacenar los productos que el cliente selecciona ¿en la base de
datos o en una sesión? Tengo un par de libros PHP donde se explica el
desarrollo de un carrito y uno lo hace con sesiones y el otro
almacenando los articulos seleccionados en base de datos. ¿Cual creeis
que es el mejor sistema? ¿Cual me recomendáis?

Saludos

Eva

Tei

unread,
Jul 12, 2010, 3:33:01 PM7/12/10
to php-o...@googlegroups.com
La sesion es un sistema perfectamente valido, a no ser que quieras que
sobrevivan a varias sesiones, que yo creo que en la practica es nunca.

Puedes guardar un array con el id del producto y la cantidad, aunque
algo asi quien sabe si terminaria demostrandose limitativo. asi que
mejor guarda un array de arrays....


$carro = array();
$carro[] = array("id"=>8,"cantidad"=>3);
$carro[] = array("id"=>4,"cantidad"=>1);

$_SESSION["carrito"] = $carro;

creo que con eso vale, me parece que no hace falta serialize, sino..
pues lo haces con serialize.


2010/7/12 eva...@gmail.com <eva...@gmail.com>:


--
--
ℱin del ℳensaje.

victori...@gmail.com

unread,
Jul 12, 2010, 3:40:28 PM7/12/10
to php-o...@googlegroups.com
En principio las sesiones son un sistema perfectamente válido, como apunta Tei, sin embargo se me ocurren situaciones en las que almacenar los productos en la sesión puede tener problemas: cuando falla la conexión y se pierde la sesión, cuando el usuario quiere almacenar una serie de productos para consultar con la parienta la disponibilidad de presupuesto para la compra... o cualquier situación en la que entre la sesión de selección de productos y la de compra efectiva pueda transcurrir un tiempo.

Reflexionando sobre eso se me ocurre que el mecanismo más razonable sería entonces almacenarlo en una base de datos (pero para eso el usuario debe haberse registrado a priori) con la posibilidad de que en nuevas visitas del usuario se recuperen listas de la compra no ejecutadas (habría que poner un mecanismo para declararlas caducadas con el tiempo?).

Por otra parte, si no quiero obligar al usuario a identificarse hasta el proceso de ejecución de la compra, el sistema de sesiones es el más apropiado, aunque corro el riesgo de que si falla la conexión tenga que reiniciar el proceso.

Es mi reflexión (en voz alta)

Saludos
--
Has recibido este mensaje porque estás suscrito al grupo "PHP-Ovillo" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a php-o...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a php-ovillo+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-ovillo?hl=es.

Jairo Ochoa

unread,
Jul 12, 2010, 4:41:58 PM7/12/10
to php-o...@googlegroups.com
Hablo desde el punto de vista de haber hecho diversas tiendas.

Yo utilizo cookies, ya que permite guardar la compra de un día para otro y no mete basura en la base de datos.
Es increible la cantidad de pedidos que comienza la gente y nunca llega a finalizar.
No llego a ver esos productos, porque nunca pasan por la base de datos, pero si observo cientos de registros sin compra, que tal y como está estructurada la web tuvieron que crear un carro para llegar al paso del registro.

Variables de sesión no recomiendo porque muchas veces los clientes añaden productos, se marchan, vuelven más tarde o al día siguiente a acabar el pedido y está bien facilitarles el trabajo y que no tengan que volver a buscar los productos.
O en el caso de que se cuelgue el navegador también perderían la compra y eso sí que es molesto.

Usar la base de datos, implica un registro previo, salvo que generes una clave única que se pueda asociar a ese cliente y no a otro. Esa clave (creo) que debería estar en una cookie para que el carro no quede huérfano si retoma la compra al día siguiente.
Ventajas? Estudio de mercado, saber que busca la gente, para después intentar saber porqué no compraron (el precio por ejemplo)
Problemas? carga sobre la base de datos

Valora todos esos factores y elige sesión, cookie o db. Los tres son válidos.


Saludos,
--

Jairo Ochoa
Reply all
Reply to author
Forward
0 new messages