
Una aplicación que es muy recurrente en Internet es el desarrollo de una aplicación para el control de una hospital. Esta aplicación nos sirve para utilizar lenguajes del lado del cliente, como JavaScript y lenguajes del lado del servidor como PHP, así como conectarlo con bases de datos, en este caso como MySQL, herramientas que son las más utilizadas en la Web. En este curso construiremos las páginas web por medio de Bootstrap 5.3. lo cual nos permitirá tener una aplicación responsiva.
Partiremos desde una página completamente en blanco hasta concluir la parte del usuario (front-end) y la parte del administrador (back-end). Los objetivos del presente curso son:
Conocer los aspectos básicos de PHP y su instalación.
Crear la estructura Modelo, Vista y Controlador para construir la tienda virtual con PHP y MySQL.
Crear el controlador, el modelo y las vistas necesarias para permitir el acceso de los usuarios al sistema.
Crear el menú, controlador, modelo y las vistas necesarias para: el tablero, las cuentas, los movimientos.
Manejo de imágenes y paginación de consultas muy largas
Este curso intermedio, por lo que usted debe tener las bases de programación en Bootstrap, PHP, JavaScript y MySQL, aunque no debe de ser experto en ellos. Es una buena oportunidad para poner en práctica sus conocimientos. Usted debe de contar con una instalación de Apache-PHP-MySQL, como XAMPP, MAMP o WAMP. Al final del curso contarás con todos los archivos del curso y los esquemas de la base de datos.
Una aplicación que es muy recurrente en Internet es el desarrollo de una aplicación para la administración de un Hospital. Esta aplicación nos sirve para utilizar lenguajes del lado del cliente, como JavaScript y lenguajes del lado del servidor como PHP, así como conectarlo con bases de datos, en este caso como MySQL, herramientas que son las más utilizadas en la Web. En este curso construiremos las páginas web por medio de Bootstrap 5.3. lo cual nos permitirá tener una aplicación responsiva.
Para utilizar PHP necesitas tres elementos fundamentales: un editor de código, un servidor web (con el motor PHP) y un navegador.
La forma más sencilla de empezar es instalar un entorno de desarrollo local que incluya todo lo necesario.
XAMPP es un paquete de software libre que te permite crear un servidor web en tu propia computadora de forma rápida y gratuita. Es la herramienta principal para que programadores y estudiantes prueben sitios web o aplicaciones dinámicas de forma local, sin necesidad de tener acceso a internet.
El funcionamiento básico del patrón MVC, puede resumirse en:
El usuario realiza una petición (desde la vista).
El controlador captura la petición.
Hace la llamada al modelo correspondiente.
El modelo será el encargado de interactuar con la base de datos.
El controlador recibe la información y la envía a la vista.
La vista muestra la información.
Tablas: camas, camasestados, cuentas, cuentastipo, doctores, doctoresespecialidad, egresos, egresostipos, enfermeras, enfermerasespecialidad, estadousuario, facturasestado.
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
El archivo .htaccess nos permite modificar el acceso, en un ambiente Apache, a directorios o archivos.
Para que no puedan entrar a un directorio desde la URL y no ver el mismo se utiliza (en app):
MVC divide las aplicaciones en tres niveles de abstracción:
El método separarURL() toma la URL del sistema y lo separará.
Utilizaremos las funciones:
isset() valida si una variable está definida.
rtrim() limpia caracteres a la derecha.
filter_var(FILTER_SANITIZE_URL) limpia los caracteres ilegales en una URL.
explode() separa una cadena por medio de una cadena delimitadora.
Dentro del constructor llamaremos el controlador y el método solicitado desde los parámetros.
Utilizaremos las funciones:
file_exists() verifica que exista el archivo físico.
ucwords() cambia a mayúscula las primeras letras.
unset() elimina una variable.
En todos los controladores necesitaremos dos métodos: Uno para llamar a las vistas con los datos a desplegar y otro para generar el modelo.
Nos conviene generar una clase auxiliar (que no se ejecuta directamente) con ambos métodos.
El proceso de entrada o login es un procedimiento de seguridad que permite a un usuario autenticarse para acceder a un sistema, aplicación o servicio en línea, generalmente utilizando un nombre de usuario y una contraseña, y a menudo complementado con autenticación multifactor (MFA) para mayor seguridad.
Bootstrap 5.3, la versión actual de Bootstrap, es muy bien considerada por la comunidad de desarrolladores web.
Se destaca por su facilidad de uso, su amplia compatibilidad y su extensa documentación, lo que lo convierte en una herramienta muy valiosa tanto para principiantes como para desarrolladores experimentados.
form-group
text-start
form-control
btn
btn-info
Dividiremos la vista en un encabezado y en un pie de página para utilizarlos en las diferentes vistas.
A medida que avanzamos en las llamadas de los métodos, la ruta relativa se puede ir perdiendo, por lo que la mantendremos en una Constante global.
filter_var() en PHP es una función esencial para validar y sanear datos, como emails, URLs, números e IPs, asegurando que sean seguros y cumplan con un formato específico, protegiendo tu aplicación de datos maliciosos o incorrectos.
Un proceso de validación muy importante es que busquemos en la base de datos el correo electrónico antes de enviar el correo.
Por medio de la instrucción mail() enviaremos el correo electrónico al usuario.
Realizaremos la función para desplegar el arreglo de errores dentro de la vista.
Podemos crear una vista general donde podemos enviar diferentes mensajes erróneos o de aceptación.
Es muy importante saber a donde regresar después de la vista.
base64_encode()
base64_decode()
str_contains()
str_replace()
Necesitamos crear el método y la vista para cambiar la clave de acceso.
hash_hmac(“sha512”,$clave,”llave encriptacion”); Genera una cadena cifrada por el método HMAC.
hash_hmac(“sha512”,$clave,”llave encriptacion”); Genera una cadena cifrada por el método HMAC.
Una vez que tenemos la clave de acceso encriptada, la compararemos con la correspondiente en la base de datos.
hash_hmac(“sha512”,$clave,”llave encriptacion”);
Genera una cadena cifrada por el método HMAC.
session_start(array $options = []): bool
$_SESSION[ ]
session_destroy(): bool
Debemos validar que la sesión sea correctamente creada.
Si el usuario “retrocede” al login, debemos eliminar la sesión.
time() - Regresa los números de segundo transcurridos desde el 1o de enero de 1970, tiempo Unix.
setcookie() - establece una cookie o galleta.
$_COOKIE[] - vector global
Dentro de el archivo del encabezado podemos añadir un menú y manipularlo si es administrativo o un usuario.
La clase de utilidad de Bootstrap .ms-auto establece como margin-start: auto.
Crear las opciones del lado derecho: usuario y salida.
Crear el parámetro private $sesion; el la clase Tablero.
Modificar el constructor en la clase Tablero.
Crear el método de logout() en la clase Tablero.
Realizaremos el proceso de validación y creación de la clave de acceso temporal.
Los usuarios tendrán un estado “inactivo”.
`id` int(11) NOT NULL,
`tipoUsuario` int(11) NOT NULL,
`nombres` varchar(200) NOT NULL,
`apellidos` varchar(200) NOT NULL,
`direccion` varchar(500) NOT NULL,
`telefono` varchar(50) NOT NULL,
`correo` varchar(150) NOT NULL,
`clave` varchar(500) NOT NULL,
`genero` int(11) NOT NULL,
`estadoUsuario` int(11) NOT NULL,
Crearemos la vista con los siguientes campos:
Id (*) int(11)
nombres varchar(200)
apellidosvarchar(200)
Debemos primero “armar” la vista con los datos necesarios.
Crear la vista con los campos.
Regresar los valores al controlador y validarlos.
Insertarlos en la base de datos.
Creamos la etiqueta Select
Escribimos la primer etiqueta <option>
Creamos las etiquetas del catálogo con PHP
Verificamos si una de ellas ha sido seleccionada previamente.
Realizaremos el proceso de validación y creación de la clave de acceso temporal.
Los usuarios tendrán un estado “inactivo”.
Primero verificaremos que el correo no exista previamente en la base de datos.
Después insertamos el registro.
Después enviaremos el correo al usuario.
Aprovecharemos la vista de “Alta” para modificar los datos.
Necesitamos un método para “armar” la vista.
Aprovecharemos la vista de “Alta” para mostrar el registro antes de borrarse.
Necesitamos un método para “armar” la vista de baja.
Debemos validar que el usuario esté activo.
Actualizar la fecha del login.
Enviarlo a diferente menú (si procede).
Debemos definir el tamaño de la página (una constante).
El método de carátula debemos calcular el número de página.
Determinar el número de registros de la tabla.
Debemos calcular la página y el último registro.
Enviar los datos a la vista
Crear un archivo de librerías
Debemos definir el tamaño de la página (una constante).
El método de carátula debemos calcular el número de página.
Determinar el número de registros de la tabla.
Debemos calcular la página y el último registro.
Enviar los datos a la vista
Crear un archivo de librerías
Debemos definir el tamaño de la página (una constante).
El método de carátula debemos recibir el número de página.
Determinar el número de registros de la tabla.
Debemos calcular la página y el último registro.
Enviar los datos a la vista
Crear un archivo de librerías
Límites y número de páginas (izquierda y derecha)
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Id (*) int(11)
nombres varchar(200)
apellidos varchar(200)
correo varchar(200)
clave varchar(500)
telefono varchar(100)
tipoUsuario (Índice) int(11)
estadoUsuario (Índice) int(11)
id int(11) NOT NULL,
nombres varchar(200) NOT NULL,
apellidos varchar(200) NOT NULL,
nacimiento date NOT NULL,
direccion varchar(300) NOT NULL,
razonSocial varchar(300) NOT NULL,
rfc varchar(100) NOT NULL,
correo varchar(200) NOT NULL,
Realizaremos el proceso de validación y creación de la clave de acceso temporal.
Devuelve una cadena con barras invertidas antes de los caracteres que deben escaparse.
Aprovecharemos la vista de “Alta” para modificar los datos.
Necesitamos un método para “armar” la vista.
Aprovecharemos la vista de “Alta” para mostrar el registro antes de borrarse.
Necesitamos un método para “armar” la vista de baja.
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Crearemos los archivos básicos de el modelo, el controlador y las dos vistas básicas: la carátula y la vista para las altas.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Aprovecharemos la vista de “Alta” para modificar los datos.
Necesitamos un método para “armar” la vista.
Aprovecharemos la vista de “Alta” para mostrar el registro antes de borrarse.
Necesitamos un método para “armar” la vista de baja.
Crearemos los archivos básicos del Modelo, las Vistas y del Controlador, leeremos la tabla correspondiente y la vaciaremos en la vista de la carátula.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Realizaremos el proceso de validación y limpieza de los datos.
Devuelve una cadena con barras invertidas antes de los caracteres que deben escaparse.
Aprovecharemos la vista de “Alta” para modificar los datos.
Necesitamos un método para “armar” la vista.
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Crearemos los archivos básicos del modelo, el controlador y las dos vistas básicas: la carátula y la vista para las altas.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Aprovecharemos la vista de “Alta” para modificar los datos.
Necesitamos un método para “armar” la vista.
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Crearemos los archivos básicos del Modelo, las Vistas y del Controlador, leeremos la tabla correspondiente y la vaciaremos en la vista de la carátula.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Realizaremos el proceso de validación y limpieza de los datos.
Devuelve una cadena con barras invertidas antes de los caracteres que deben escaparse.
Aprovecharemos la vista de “Alta” para modificar los datos.
Necesitamos un método para “armar” la vista.
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Crearemos los archivos básicos del modelo, el controlador y las dos vistas básicas: la carátula y la vista para las altas.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Aprovecharemos la vista de “Alta” para modificar los datos.
Necesitamos un método para “armar” la vista.
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Crearemos los archivos básicos del Modelo, las Vistas y del Controlador, leeremos la tabla correspondiente y la vaciaremos en la vista de la carátula.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Realizaremos el proceso de validación y limpieza de los datos.
Devuelve una cadena con barras invertidas antes de los caracteres que deben escaparse.
Aprovecharemos la vista de “Alta” para modificar los datos.
Necesitamos un método para “armar” la vista.
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Crear una vista con los campos a filtrar y una opción para ordenar.
Recibir los datos y armar el filtro, la cadena informativa y la cadena para ordenar.
Almacenar los datos del filtro en la base de datos.
Modificar los querys de consulta.
Lanzar nuevamente la carátula.
Crearemos los archivos básicos del modelo, el controlador y las dos vistas básicas: la carátula y la vista para las altas.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Necesitamos actualizar la tabla de movimientos y el saldo en la tabla de ingresos.
Igual que los ejemplos anteriores, crearemos un método para armar la vista, leeremos los movimientos del ingreso y formatearemos los datos, separando los cargos, los abonos y el saldo.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Crearemos el método de alta para armar la vista y luego regresaremos a la misma vista de movimientos.
Siempre es necesario revisar el código en entidades más complejas.
Crearemos los archivos básicos del Modelo, las Vistas y del Controlador, leeremos la tabla correspondiente y la vaciaremos en la vista de la carátula.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Realizaremos el proceso de validación y limpieza de los datos.
Devuelve una cadena con barras invertidas antes de los caracteres que deben escaparse.
Un paciente puede tener varias revisiones en su historial médico.
Utilizaremos un acordeón de Bootstrap para desplegarlos, posteriormente mostraremos los detalles en un la vista de los mensajes.
Utilizaremos un acordeón de Bootstrap para desplegarlos, posteriormente mostraremos los detalles en un la vista de los mensajes.
Para la modificación de un reporte del historial utilizaremos los mismos procedimientos de los objetos o entidades anteriores.
Crearemos los archivos básicos del modelo, el controlador y las dos vistas básicas: la carátula y la vista para las altas.
Podemos consultar todos los datos del cliente antes de permitir su salida.
La tabla maestra sigue siendo la tabla de ingresos.
Una vez que tenemos los datos, los desplegaremos en una vista de pestañas generada con Bootstrap.
Una vez que tenemos los datos, los desplegaremos en una vista de pestañas generada con Bootstrap.
Desplegaremos el reporte médico por medio de la vista de mensaje y regresaremos a la consulta.
Debemos verificar primero que el paciente tenga un saldo igual a cero para proceder al cierre y generar su salida.
Domicilio (Alta por mejoría/curación): El paciente regresa a su hogar tras finalizar su tratamiento y recuperarse satisfactoriamente.
Traslado a otra unidad médica (Referencia/Remisión): El paciente es enviado a otra institución de salud (de mayor o menor complejidad) para continuar su atención, estudios especializados o rehabilitación, previo acuerdo entre instituciones.
Unidad de Hospitalización Domiciliaria: Algunos hospitales derivan al paciente a su casa, pero bajo la supervisión activa de un equipo médico hospitalario.
Alta Voluntaria: El paciente o sus familiares deciden el retiro de la institución a pesar de que el personal médico no ha finalizado el tratamiento o no lo considera oportuno.
Fuga (Abandono): La salida del paciente se realiza sin el consentimiento ni conocimiento del personal hospitalario.
Defunción (Fallecimiento): El paciente fallece y se realiza el egreso tras la firma del certificado de defunción por parte del médico.
Centro de detención/Establecimiento penal: Para pacientes bajo custodia policial.
Crearemos la vista para capturar la salida del paciente.
Procederemos a su limpieza, validación y almacenamiento.
Crearemos el método de alta para armar la vista y luego leeremos los datos de la vista para limpiarlos, validarlos y almacenarlos en la base de datos.
Por medio de la librería FPDF, desarrollada por terceros, crearemos la factura del paciente.
Leeremos los datos para la factura y armaremos las cadenas.
Realizaremos una rutina en Helper para dividir las cadenas muy largas.
Armaremos las cadenas para el detalle y los datos de facturación.
Crearemos el encabezado de la factura.
Por medio de los comandos de FPDF como:
Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])
iconv en PHP es una función que convierte cadenas de texto entre diferentes codificaciones de caracteres, como de UTF-8 a ISO-8859-1.
Podemos convertir la cantidad pagada a una cadena para seguridad del documento.
La integridad referencial es propiedad de la base de datos.
La misma significa que la clave externa de una tabla de referencia siempre debe aludir a una fila válida de la tabla a la que se haga referencia.
La integridad referencial garantiza que la relación entre dos tablas permanezca sincronizada durante las operaciones de actualización y eliminación.
Camas: idSala, idPaciente
Egresos: idIngreso, idPaciente, idDoctor
Historiales: idIngreso, idPaciente, idDoctor
Ingresos: idPaciente, idDoctor, idCama
Movimientos: idIngreso, idCuenta
La integridad referencial es propiedad de la base de datos.
La misma significa que la clave externa de una tabla de referencia siempre debe aludir a una fila válida de la tabla a la que se haga referencia.
La integridad referencial garantiza que la relación entre dos tablas permanezca sincronizada durante las operaciones de actualización y eliminación.
La integridad referencial es propiedad de la base de datos.
La misma significa que la clave externa de una tabla de referencia siempre debe aludir a una fila válida de la tabla a la que se haga referencia.
La integridad referencial garantiza que la relación entre dos tablas permanezca sincronizada durante las operaciones de actualización y eliminación.
Los administradores pueden respaldar la base de datos.
Preparar la vista “mensaje” para mandar el respaldo (dos botones).
Crear en Tablero el método para desplegar el mensaje con dos opciones.
Crear en Tablero el método “respaldarEjecutar()”.
Crear en el Modelo los métodos getTablas() y respaldarTabla().
Crear en MySQL dos métodos: queryCrudo() y getBaseDatos().
Los administradores pueden respaldar la base de datos.
Preparar la vista “mensaje” para mandar el respaldo (dos botones).
Crear en Tablero el método para desplegar el mensaje con dos opciones.
Crear en Tablero el método “respaldarEjecutar()”.
Crear en el Modelo los métodos getTablas() y respaldarTabla().
Crear en MySQL dos métodos: queryCrudo() y getBaseDatos().
Cualquier usuario podrá modificar sus datos y su clave de acceso.
//Tipos de usuario
define("ADMON", 1);
define("RECEPCIONISTA", 2);
define("OPERADOR", 3);
Cualquier usuario podrá modificar sus datos y su clave de acceso.
En nuestro sistema tendremos tres roles: Administrador, Operador y Recepcionista.
Necesitamos calcular los días de la semana del día presente.
Crearemos la extracción de la información por cuenta, día y usuario.
Mostraremos la información en una tabla.
Necesitamos realizar una tabla para desplegar los datos de las ventas de la semana.
Necesitamos realizar una tabla para desplegar los datos de las ventas de la semana.
Vamos a integrar los logos, el favicon y el botón de hamburguesa en el sistema.
Subiremos los archivos al servidor.
Cambiar los datos de la conexión (modificar el usuario).
Verificar la ruta del mismo.
Verificar el correo electrónico.
Verificar los css para la imagen.
Verificar el respaldo.
Una aplicación que es muy recurrente en Internet es el desarrollo de una aplicación para el control de un hospital. Esta aplicación nos sirve para utilizar lenguajes del lado del cliente, como JavaScript y lenguajes del lado del servidor como PHP, así como conectarlo con bases de datos, en este caso como MySQL, herramientas que son las más utilizadas en la Web. En este curso construiremos las páginas web por medio de Bootstrap 5.3. lo cual nos permitirá tener una aplicación responsiva.
Partiremos desde una página completamente en blanco hasta concluir la parte del usuario (front-end) y la parte del administrador (back-end). Los objetivos del presente curso son:
Conocer los aspectos básicos de PHP y su instalación.
Crear la estructura Modelo, Vista y Controlador para construir la tienda virtual con PHP y MySQL.
Crear el controlador, el modelo y las vistas necesarias para permitir el acceso de los usuarios al sistema.
Crear el menú, controlador, modelo y las vistas necesarias para: el tablero, las cuentas, los movimientos.
Manejo de imágenes y paginación de consultas muy largas
Este curso intermedio, por lo que usted debe tener las bases de programación en Bootstrap, PHP, JavaScript y MySQL, aunque no debe de ser experto en ellos. Es una buena oportunidad para poner en práctica sus conocimientos. Usted debe de contar con una instalación de Apache-PHP-MySQL, como XAMPP, MAMP o WAMP.
Al final del curso contarás con todos los archivos del curso y los esquemas de la base de datos.