El día de hoy vamos a resolver un ejercicio de programación en PHP. Se trata de simular la compra de productos a través de un formulario y luego mostrar el total.

Es un ejercicio de programación para aprender más sobre este lenguaje. La solicitud dice:

Realizar una página web dinámica con PHP que simule la compra de varios productos de una tiendita a través de un formulario web.

  • Solicitar el nombre de 5 productos (cuadros de textos).
  • Solicitar la marca de cada producto (desplegables).
  • Solicitar el precio de cada producto (cuadros de número)
  • El formulario tendrá los botones de enviar y reset
  • Al presionar el botón de envío, el programa calculará la suma de los productos (subtotal), el IVA y el total de la compra (Subtotal + IVA)

Vamos a hacerlo dibujando el formulario de manera dinámica y recibiéndolo igualmente en el servidor.

Dibujando formulario con PHP

Solicitar datos de 5 productos con PHP - Ejercicio de programación resuelto

Solicitar datos de 5 productos con PHP – Ejercicio de programación resuelto

Primero veamos cómo solicitar los datos de los 5 productos con PHP (nombre, marca y precio).

Para eso simplemente hacemos un ciclo y en cada paso dibujamos los input (todos dentro del mismo form):

Fíjate en que el formulario tiene el action vacío, por lo que al enviarlo se enviará a la misma página en la que se está mostrando (es decir, el formulario y el manejo del mismo están en el mismo archivo).

Otra cosa importante es que en el name de los elementos estamos usando [] al final, esto quiere decir que cada campo del formulario será enviado como arreglo.

Nota: para enviar y resetear el formulario tenemos los input type submit y reset respectivamente.

Diferenciar entre ver página o procesar formulario

Debido a que el formulario y el procesamiento está en el mismo script de PHP necesitamos diferenciar si se quiere ejecutar el script o procesar el formulario.

Cuando visitamos la página del script desde el navegador estamos haciendo una petición GET, pero cuando el formulario es enviado hace una petición POST.

Nota: si quisieras podrías separar los archivos y procesar el formulario en, por ejemplo, procesar.php mientras que muestras el formulario en productos.php.

Para diferenciar podemos leer la clave REQUEST_METHOD del arreglo superglobal $_SERVER.

Procesar formulario

Ahora veamos cómo procesar el formulario y mostrar IVA, total, etcétera. Simplemente vamos a hacer un ciclo for desde 1 hasta la cantidad de elementos y extraer el valor de cada arreglo según su índice.

El subtotal es la suma de todos los precios, luego se le aumenta el IVA (o impuesto) sacando el porcentaje de aumento y finalmente el total es la suma del subtotal y el IVA.

En este caso el IVA está en el 16 % pues así es en mi país, tú puedes cambiar ese porcentaje.

Nota: fíjate en el exit al final. Eso es para detener la ejecución del código y es necesario porque estoy usando el mismo archivo para ambas cosas y así prevengo que se vuelva a mostrar el formulario cuando lo estoy procesando.

Poniendo todo junto

Recibo de compra con PHP en ejercicio resuelto - Subtotal, IVA y total

Recibo de compra con PHP en ejercicio resuelto – Subtotal, IVA y total

El código completo queda como se ve a continuación. La salida ya la has visto en las imágenes anteriores.

Por aquí te dejo más tutoriales de PHP en mi blog.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 6,046 suscriptores

parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comentarios

Deja un comentario

Marcador de posición del avatar

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

A %d blogueros les gusta esto: