Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.
En este post te voy a explicar y mostrar un ejemplo de código con PHP, MySQL, Twig y Bootstrap en donde se gestionan notas y usuarios.
La app de notas es totalmente responsiva y hecha completamente con PHP, usando MySQL para la persistencia de datos.
El correo es posible gracias a Twig para renderizar la vista, y PHPMailer para enviarlos.
Como lo ves, está muy enfocado a la gestión de usuarios.
El código fuente está en GitHub, basado en mi caja de herramientas de PHP. El código contiene:
La demostración la puedes ver en mi página de apps.
Para descargar el código simplemente ve a GitHub y clona o descarga el proyecto. Recuerda que debes tener Composer y PHP instalado.
Ahora voy a explicar cómo funciona esta app de notas con PHP y MySQL.
La gestión de usuarios no la explicaré, pues es más larga, aunque muy parecida a las notas, excepto por la parte de restauración de contraseñas y contraseñas olvidadas.
No olvides que debes crear las tablas definidas en esquema.sql, y si hace falta instala un servidor de correo de pruebas para la gestión de usuarios.
Comenzamos viendo las rutas de las notas en rutas.php:
Además de las que tienen que ver con el perfil y el cierre de sesión, tenemos las rutas que son:
Cada ruta llama a un método del controlador de notas, el cual es el siguiente:
El controlador se encarga de funcionar como pegamento entre el usuario y el software; pues valida los datos, muestra vistas (como el formulario) y redirige a otras ubicaciones.
Hay muchas llamadas al modelo de notas, el cual se encarga de comunicarse con la base de datos:
Son consultas simples, es decir, no estoy usando ningún ORM.
Puedes ver que se hace el CRUD completo de las notas con PHP, ya que hacemos un SELECT, UPDATE, DELETE e INSERT.
El formulario que agrega una nota es el siguiente:
Su action
es la ruta notas/guardar definido en las rutas que vimos anteriormente. Tiene un campo de tipo textarea
que se llama contenido
.
Cuando una nota se guarda con éxito, esta es la salida:
Es decir, si es exitoso, se redirige a las notas y se muestra una alerta que desaparece al recargar la página.
Cuando ya tenemos notas, las mismas se muestran en un ciclo (mira el modelo de notas en el método deUsuario
) y la vista es la de arriba.
Su código es el siguiente:
Se hace un ciclo for
con twig y se dibujan div
s de tipo tarjeta (este estilo lo da Bootstrap)
Además, se ponen dos enlaces: uno para editar la nota y otro para eliminarla.
Cuando se hace click en editar nota, se muestra un formulario que tiene el id de la nota como un campo hidden
, y se rellena el contenido de la misma:
Si no entiendes de dónde vienen estos datos, mira el controlador de notas en su método editar
, y al modelo en su método unaDeUsuario
(pues recuerda que solo se pueden editar notas que le pertenecen a un usuario)
Si se guarda correctamente, se regresa a donde se muestran todas las notas con una alerta:
Cuando se elimina una nota se pide una confirmación que muestra un formulario que, al ser enviado, elimina realmente la nota (solo si le pertenece al usuario).
El formulario de confirmación es el siguiente:
Y se ve así:
En caso de que se confirme y la eliminación sea correcta, de nuevo se muestran todas las notas:
Así es como funciona, a grandes rasgos, esta app de notas con PHP. Recuerda que utiliza Bootstrap 4 para ese bonito diseño, y como storage o almacenamiento una base de datos con PHP que bien podría ser cambiado por otro motor.
Te repito que esta app está basada en mi caja de herramientas que presenté anteriormente.
Eres libre de ver el código en GitHub, o registrarte y usar la app.
Te hago una consulta entre composer y phpunit que es mas practico para hacer integracion continua con travis en github ?
Hola, lo siento, no tengo mucha experiencia con ello por el momento así que no te puedo aconsejar.
Saludos 🙂
ah ok muchas gracias le voy a pegar una mirada , y una consulta se podria llegar a adaptar la poo que usas en tu codigo a php estructurado ya que yo ya poseeo el archivo index y la maquetacion en html
No entiendo bien tu pregunta, ya que el estilo de programación no afecta la maquetación. Pero de cualquier modo, sí, no veo problema en dejar la poo de lado.
Saludos
Que tal quiero hacer una funcionalidad como la que realizaste por lo que me llamo la atencion tu aplicacion. Cuando baje el codigo y lo quiero probar me tira el siguiente error
warning: require(C:\wamp64\www\notasapp/vendor/autoload.php): failed to open stream: No such file or directory in C:\wamp64\www\notasapp\index.php on line 2
es posible que haya falta un archivo para que pueda funcionar ? Te agradeceria la ayuda
Gracias
Sí, hay que instalar las dependencias. Primero: https://parzibyte.me/blog/2019/02/02/primeros-pasos-composer-explicacion-funcionamiento/
Después
composer install
Saludos