Hace poco me vi en la necesidad de crear una web para un restaurante y entre las peticiones, el cliente quería enviar el menú del día a sus clientes inscritos en el Newsletter.
En un principio les expliqué dos formas de hacerlo:
- Crear el menú en Word y subirlo después al FTP manualmente.
- Crear un formulario online para que el sistema en PHP cree un archivo PDF con el menú elegido.
No entré en temas de boletín de noticias y demás porque ya tenían una lista bastante grande de inscritos y un sistema de pago para enviar los mails (algo que me ahorraba).
Tabla de contenidos
Primera opción – Crear Word y subir a FTP manualmente
La verdad es que la más fácil en cuanto a desarrollo sería esta opción, pero el problema no era la facilidad para el desarrollador, sino para el que se dedicara en el restaurante a hacer estas funciones.
Pero ¿Cuál es el problema en esta opción?, la respuesta es simple, la mayoría de los camareros no tenían ni idea de utilizar un FTP y además podrían tocar donde no deben (aunque podría dar privilegios básicos a carpetas determinadas, al final terminarían por llamarme para cualquier problema).
Tanto el cliente como yo descartamos esta opción, que aunque hubiera sido mas económica no era la conveniente.
Formulario web para crear PDF
Esta segunda opción ya es más profesional, eso si, para el cliente tenia un coste mayor.
Una vez decidimos usar esta opción, nos pusimos manos a la obra, y me gustaría contaros el proceso que lo podemos englobar en dos partes:
- ¿Qué necesitamos?
- Crear Formulario para que el cliente introduzca los menus
- Crear PDF con los datos del formulario
- Envío del PDF por correo elctrónico en PHP
¿Qué necesitamos?
Para empezar con este pequeño proyecto y hacerlo lo más rápido posible, tuve que acudir a Google y buscar scripts, clases, librerías que permitieran de una manera fácil crear un pdf en PHP y me encontré con la clase ezPdf con su correspondiente documentación.
Queda por descontado que para hacer pruebas necesitaremos un servidor web local montado con Apache, Php y MySQL, si aún no lo tenéis podéis acudir al tutorial que hace poco publiqué: Instalar Appserv o Wamp en mi ordenador.
Por otra parte tenemos que tener claro como será el concepto de la carta, es decir, donde iría cada elemento como gráficos, títulos, etc .. En mi caso y creo que todos deberían acostumbrase a hacerlo, utilicé un lápiz y un folio para ver distintas opciones.
Barajé posibilidades y al final junto con el cliente decidimos que el mejor formato sería el siguiente:
De todas maneras, en este tutorial voy a aplicar otro tipo de formato más simple, puesto que la misión de éste es tener los conocimientos mínimos para crear un PDF en PHP en lugar de complicar el asunto, esto ya va con la inquietud y el querer aprender de cada uno.
Asi que nuestro ejemplo quedará de la siguiente forma en el PDF:
Nota: He usado el logo del Restaurante Pepperoni como ejemplo para este tuturial (sacado de la web logopond). No es propiedad de COLORATE.
Ya tenemos todo lo que necesitamos para empezar con nuestro pequeño proyecto.
Crear formulario para introducir los menús
Ya sabemos perfectamente donde va a ir cada elemento, y que valores tenemos que recoger del usuario (en este caso el chef encargado de crear el menu) que son 3 platos por cada tipo de plato (ENTRANTES, SEGUNDOS, POSTRES, SUGERENCIAS DEL CHEF). En total 12 platos.
El formulario final, nos quedará de la siguiente manera:
Muy bien ya tenemos controlado los campos que necesitamos, ahora vamos a crear el formulario HTML. (Recomiendo usar CSS si o si, y además en los formularios no usar tablas sino capas y labels).
En el caso del restaurtante, el cliente me dijo que como máximo habría 3 platos distintos en ENTRANTES, 3 en SEGUNDOS, 3 en POSTRES y 3 en SUGERENCIAS DEL CHEF..
Así que tan solo necesitamos para el formulario 12 campos engloban todos los platos:
[html]
[/html]
Esto nos devuelve algo asi:
Como veis en el formulario, a los inputs (que es donde el «chef» va a introducir los platos) le hemos puesto como parámetro name (que es el que vamos a pasar a PHP por el método POST) los siguientes:
- ENTRANTES
- Primer Plato de Entrantes: Plato 1_1
- Segundo Plato de Entrantes: Plato 1_2
- Tercer Plato de Entrantes: Plato 1_3
- SEGUNDOS
- Primer Plato de Segundos: Plato 2_1
- Segundo Plato de Segundos: Plato 2_2
- Tercer Plato de Segundos: Plato 2_3
- POSTRES
- Primer Plato de Postres: Plato 3_1
- Segundo Plato de Postres: Plato 3_2
- Tercer Plato de Postres: Plato 3_3
- SUGERENCIAS DEL CHEF
- Primer Plato de Sugerencias del Chef: Plato 4_1
- Segundo Plato de Sugerencias del Chef: Plato 4_2
- Tercer Plato de Sugerencias del Chef: Plato 4_3
Por tanto en nuestro archivo php los tendremos que recuperar de la siguiente manera:
[php]
$plato1_1 = $_POST[‘plato1_1’];
[/php]
Y así sucesivamente con todos los platos, hasta lograr tener en variables php todos los que ha introducido el «Chef».
A partir de aquí, una vez hemos almacenado los datos que nos han pasado por el formulario, ya podemos empezar a crear el PDF.
Crear PDF con los datos del formulario
Para la creación del archivo PDF con el menú del restaurante, vamos a utilizar una clase ya creada que nos facilitará mucho el trabajo llamada ezPDF. Existen varias clases en php para crear PDF pero la elección de esta clase se debe a que no necesita de ningún tipo de módulo PHP adicional, esto es muy aconsejable puesto que dependiendo del servidor donde tengamos alojados los archivos puede que soporte o no la inserción de modulos externos.
Con ezPDF no tendremos ningún problema, además podremos usarlo totalmente gratis para uso comercial.
Lo primero que tenemos que hacer es descargar la clase ezPDF.
Una vez descargado, hay que descomprimirlo en la carpeta que hayamos creado para este pequeño proyecto. En mi caso los archivos quedan de la siguiente manera:
Como hemos visto en el formulario, el método POST hace una llamada al archivo pdf.php en la siguiente línea:
[html]
5 comentarios
Muy bueno el codigo, tu crees que pueda funcionar con Libreria GD si fuera asi quedaia perfecto el diseño.
Seria cuestion de intentar pero felicitaciones.
Ricardo, por ejemplo que sugieres crear con la librería GD?
Saludos.
amigo, una consulta pero como se q persona a llenado ese formulario, xq en el formulario debiera pedir un nombre y correo
XQ SUPONIENDO EN QUE SEA PARA UN RETAURANT REAL EL CLIENTE TIENE QUE ESTAR REGISTRADO EN LA PAGINA WEB PARA QUE EL ENCARGADO DEL RESTAURANTE SEPA QUEIN A ENVIADO ESE PEDIDO.ME IMAGINO O ESTOY MAL?
una pregunta yo lo ejecuto y me manda un error de la variable $fname kiien sabe por k o k devo tener instalado en mi maquina para correrlo