Cómo hacer una tienda on-line (e-commerce) con PHP

Supongamos que una prestigiosa empresa dedicada a Registro de dominios y Web Hosting desea vender sus productos a través de su propia página web en Internet. La empresa investigó en el mercado, encontró nuestra buena reputación en la industria :-) y nos encargó el proyecto de programación de su tienda on-line.

En primer lugar, lógicamente, destaparemos una cerveza para festejar nuestro nuevo trabajo e importante cliente obtenido ;-).

Luego…, ¡a programar!

Ahora bien, la empresa cuenta con tres productos y desea que sus clientes puedan adquirir cuantas unidades deseen de cada uno de ellos. Otro punto muy importante es que sea posible comprar distintos productos dentro de un mismo pedido de compra (sin necesidad de tener que reiniciar el proceso luego de confirmar la compra).

Para hacerte una idea de lo que deseamos construir puedes ver la demo del script para tienda on-line (e-commerce) en php.

Lo primero que necesitaremos es crear una pantalla donde podamos presentar un producto, permitir al usuario seleccionar la cantidad de unidades que desea y finalmente ordenar el producto (común en todo script e-commerce). Comenzaremos con el primer producto «Web Hosting» para el cuál crearemos una página llamada «web-hosting.html». Su look y código más relevante es el siguiente:

Nota: al final del artículo tienes el link para encontrar y copiar todo el código fuente del script.

Consideraciones muy importantes para la programación de esta pantalla HTML donde presentamos el servicio de web hosting:

  • la sentencia <form action=»ordenar_producto.php» method=»post»> nos sirve para abrir un formulario y especificar el script php que tomará y procesará sus datos; luego que el usuario presione el botón submit. En este caso, se trata del script «ordenar_producto.php»
  • los dos campos ocultos «producto» y «precio unitario» que se declaran cada uno con la sentencia <input type=»hidden» … Recordemos que los campos ocultos nos sirven para configurar campos adicionales en el formulario sin que el usuario pueda ver o editar su valor en pantalla.
  • el campo desplegable que le permitirá al usuario seleccionar la cantidad de unidades que desea comprar del producto
  • el botón «submit», que permitirá al usuario ordenar el producto y pasar a la próxima pantalla. En nuestro caso la próxima pantalla es el script «ordenar_producto.php» la cual hemos definido al configurar el formulario (ver el 1er ítem de las consideraciones)

Lo segundo que necesitaremos es crear el script ordenar_producto.php, cuya función será:

  1. tomar los datos del formulario
  2. actualizar la cesta de compra de nuestro cliente (en la cesta de compra tenemos almacenados todos los productos ordenados por nuestro cliente)
  3. mostrar la cesta de compra en pantalla; para que el cliente pueda revisar los productos ordenados y el precio total que lleva acumulado

Nota: cesta de compra también se conoce como «carro de compras» o «carrito de compras» en otros países de habla hispana y la graficamos en la siguiente imágen. En inglés lo podremos encontrar también como Shopping Cart

Nota: al final del artículo tienes el link para encontrar y copiar todo el código fuente del script.

1. Tomar los datos del formulario

Para tomar los datos del formulario utilizamos la variable $_POST[\’campo\’] donde \’campo\’ es el nombre del dato previamente definido en el formulario. Por ejemplo, el nombre del campo desplegable es «unidades» (definido por el atributo «name» de la etiqueta «input»). Para tomar su valor en php, lo hacemos con la sentencia: $_POST[\’unidades\’]. El mismo tratamiento aplica a los campos ocultos.

2. Actualizar la cesta de compra de nuestro cliente

Aquí viene posiblemente el paso más complejo, asíque ¡máxima atención!

Además de ingresar el producto actual en la cesta de compra, debemos tener un mecanismo para recordar los productos previamente ordenados por nuestro cliente. De esta manera, nuestro cliente puede continuar observando otros productos de la tienda, agregarlos en su cesta y confirmar su pedido de compra por única vez (sin necesidad de tener que confirmar el pedido por cada producto que va agregando a la cesta).

Nota: este punto es muy importante desde el punto de vista de usabilidad del sistema (permitir al usuario hacer sus operaciones de manera más sencilla y en menor tiempo).

Para recordar los productos previamente ordenados por el usuario, por ejemplo un paquete reseller de web hosting ordenado hace 5 minutos, utilizaremos un concepto muy importante en programación web: las variables de SESSION.

Más precisamente trabajaremos con un array multidimensional llamado $_SESSION[\’productos_ordenados\’], esto vendría a ser un conjunto de arrays los cuales, en nuestro ejemplo, tendrán la misma estructura (igual cantidad y nombres de campos).

Cada array, que forma parte del array multidimensional «$_SESSION[\’productos_ordenados\’]», será conformado por cuatro campos: producto, unidades, precio-unitario y subtotal. Y guardará información de cada producto ordenado por nuestro cliente; por ejemplo si el usuario compra dos Paquetes Reseller de Web Hosting nosotros lo expresaríamos de la siguiente manera en un array:

Pero recordemos que éste array, tiene que estar dentro del array multidimensional; para que éste producto forme parte de los productos ordenados por el cliente en nuestro e-commerce.

Agregamos el array dentro del array multidimensional mediante la siguiente sentencia:

Nota: En php los corchetes «[]» detrás del nombre del array se utiliza para agregar un nuevo elemento dentro del array.

En nuestro caso, con la sentencia «$_SESSION[\'productos_ordenados\']=array ...«, estamos agregando un nuevo elemento (que también es un array) dentro del array multidimensional «$_SESSION[\'productos_ordenados\']«.

Agradecemos a la empresa Solo10.com (nuestro supuesto cliente) por facilitarnos las imágenes y características de sus productos Registro de dominios, Web hosting y Web hosting para Resellers

Desarrollar en php es parte de mi vida cotidiana, es posible que algunos conceptos teóricos los haya dado por sobreentendido… Si te agradaría profundizar algún punto en particular, por favor ingresa un comentario y lo revisamos juntos :-)

Ver y copiar todo el código fuente del script para tienda on-line (e-commerce) en PHP

Sobre el autor

Ing. Diego Angelini
(CEO & Fundador Blogdephp.com)

Un blog para ayudarte a aprender y compartir conocimientos sobre programación PHP y MySQL.

Responder a Bolivar Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

11 comentarios en “Cómo hacer una tienda on-line (e-commerce) con PHP”

  1. Hola, no hace falta que publiques este comentario, solo quería decirte que tal como está ahora el código, es potencialmente modificable para comprar por 1 $ o menos, incluso se podría inyectar código…

    De hecho, con el firebug, he modificado el precio del producto que se recoge con POST y lo he puesto a 1. Dado que no se hace ninguna comprobación al respecto, se procedería a la compra a ese precio.

    Claro está que falta la parte que realiza la compra y/o insertado en la base de datos y por lo tanto, se podría escapar allí los valores para evitar precisamente lo que digo.

    Pero desde mi punto de vista, lo mejor sería pasar solo el ID del producto y desde PHP recoger el valor del precio y demás campos requeridos, de esta forma no se pasa como POST y ya no hay posibilidad de hack. Además, cada vez que se usa POST o GET o más general, REQUEST, se debería filtrar el contenido.

    Saludos.

  2. Muy bueno tu aporte tRaCk3r!

    Efectivamente, lo correcto es pasar únicamente el ID del producto (el precio podemos consultarlo dinámicamente desde la base de datos).

    En este primer paso de la serie no quise complicarla tanto y entrar en Mysql. La finalidad por ahora en manejar formularios, variables de sessión, cuestiones de navegabilidad, etc…

    En las nuevas publicaciones del script, consideraremos tu aporte!

    Un saludo!

  3. Al final del contenido del artículo, quiero decir antes de la foto del autor y los comentarios, hay un link que dice «Ver y copiar todo el código fuente del script para tienda on-line (e-commerce) en PHP»

    Allí puedes encontrar todo el código fuente. Es gratis!

    Por favor, confirmame si has logrado encontrar los archivos y te han funcionado al ejecutarlo en tu sitio.

    Un saludo.-