
Una aplicación que es muy recurrente en Internet es el desarrollo de una para el manejo de gastos personales. 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).
Rasmus Ledford Desarrolló PHP (Personal Home Page) en 1995.
El cliente realiza una solicitud al servidor de un recurso .php
El servidor recibe la solicitud y llama al lenguaje PHP.
Donde el servidor encuentre las etiquetas PHP, lo ejecutará.
PHP realiza el programa y regresa como etiquetas HTML.
El servidor regresa el código HTML (nunca código PHP).
El cliente toma el HTML y el navegador lo interpreta.
1. Instalar la plataforma Apache-MySQL-PHP en su computadora como XAMPP, MAMP, LAMP o WAMP o es su defecto, contar con un servidor remoto con PHP.
2. Un navegador moderno.
3. Un editor de código como Sublime Text, Aptana, Brackets, Atom o Dreamweaver (cualquier versión).
4. Si se cuenta con un servidor remoto, necesitarás un FTP o cPanel.
Antes de iniciar daremos algunos consejos para el uso de la plataforma.
XAMPP es un paquete de instalación independiente de plataforma, software libre, que consiste principalmente en el sistema de gestión de bases de datos MySQL, el servidor web Apache y los intérpretes para lenguajes de script: PHP y Perl.
MAMP es una poderosa herramienta para convertir nuestra computadora en un servidor web local.
Muestra gran cantidad de información sobre el estado actual de PHP. Incluye información sobre las opciones de compilación y extensiones de PHP, versión de PHP, información del servidor y entorno (si se compiló como módulo), entorno PHP, versión del OS, rutas, valor de las opciones de configuración locales y generales, cabeceras y licencia de PHP.
Entrar a packagecontrol.io
Abrir la consola (view > show console).
Copiar el código en la consola y ejecutarlo.
Cerrar y abrir sublime text.
[Ctrl]-[shift]-[p] o tools > command palette
Escribimos
Install packages > sublime lint > detecta problemas de sintaxis.
Install packages > phpcs
PHPDocs es una adaptación de JavaDocs para documentar la programación en PHP.
¿Algo para mejorar en esta sección?
¿Algún comentario o aporte?
Tus comentarios son muy importantes y seguiré trabajando para que puedas calificar este curso con 5 estrellas.
Modelo-vista-controlador es un patrón de arquitectura de software, que separa los datos y principalmente lo que es la lógica de negocio de una aplicación de su representación y el módulo encargado de gestionar los eventos y las comunicaciones (Wikipedia).
En esta clase utilizaremos las funciones:
app: controladores, libs, modelos, sql, vistas
public: css, javascript, img
En esta clase utilizaremos los objetos PDO.
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):
Options -Indexes
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 método separaURL() 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.
Crearemos una clase base para heredar a las demás clases controladoras.
Utilizaremos las funciones:
extends: podemos extender o heredar una clase.
die() termina el programa.
Realizaremos el modelo y la primera vista para el “objeto” Login.
Iniciaremos la construcción del objeto Login para la entrada a la aplicación.
Añadiremos el framework Bootstrap 5.3. para que o se vea tan horrendo.
form-group
text-left
form-control
btn
btn-info
olvido
Inscripción (no aplica)
Una práctica muy común es tomar un archivo anterior y convertirlo en un nuevo.
Lo realizaremos para crear la vista de “olvido de la contraseña”.
De la vista principal al controlador.
El controlador despliega la vista de “Olvidaste tu contraseña”.
A medida que avanzamos en las llamas de los métodos, la ruta relativa se puede ir perdiendo, por lo que la mantendremos en una Constante global.
define()
$_SERVER[“REQUEST_METHOD”] indica el método de envío a la página.
filter_var($email, FILTER_VALIDATE_EMAIL)
Un proceso de validación muy importante es que busquemos en la base de datos el correo electrónico antes de enviar el correo.
Realizaremos la función para desplegar el arreglo de errores dentro de la vista.
Por medio de la instrucción mail() enviaremos el correo electrónico al usuario.
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.
Debemos recuperar los datos del usuario para enviarle el correo electrónico.
Solucionar el problema de las vistas.
openssl_random_pseudo_bytes — Genera una cadena de bytes pseudo-aleatoria
openssl_cipher_iv_length — Obtener la longitud del iv (vector de iniciación) de cipher
openssl_encrypt — Encripta datos
openssl_decrypt — Desencripta datos
AES: Advanced Encryption Standard aes-256-cbc
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.
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
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
Podemos “cambiar” la configuración de la aplicación desde un programa PHP sin necesidad de modificar el archivo php.ini en forma manual.
Dentro de el archivo del encabezado podemos añadir un menú y manipularlo si es administrativo o un usuario.
Casa
Comida
Salud
Auto/Transporte
Diversión
Escuela
Ahorro
Varios (internet, teléfono, revistas, etc.)
Crearemos los archivos del Modelo-Vista-Controlador.
Crearemos la tabla donde se desplegarán las categorías y el botón para las altas de una categoría.
Crearemos el método de alta y la vista correspondiente.
Leemos una de los catálogos (categoriasTipos).
Los vaciamos a un arreglo o array.
Los desplegamos en la vista.
Un proceso muy importante es recibir en el controlador la información de la vista y validarla o procesarla, antes de ser enviada al Modelo.
Es muy importante que verifiquemos las cadenas, los campos numéricos, los correos, las fechas, etc.
Hay que verificar especialmente la inyección de código.
Una vez que hayamos validado nuestros datos, estamos listos para su inserción a nuestra tabla.
Determinar el número de registros.
Crear una constante para el tamaño de página.
Calcular el inicio de la página.
Calcular el total de páginas.
Recuperar la información: inicio y tamaño de la página.
Iniciar en la página 1 (obvio).
Una vez que determinamos el número de páginas, debemos desplegar los botones correspondientes.
Una vez que determinamos el número de páginas, debemos desplegar los botones correspondientes.
Es necesario armar la llave (categoriaTipo) y modificar el formato de las cantidades (justificar la cantidad a la derecha).
Utilizaremos la misma vista de la alta para desplegar los datos para ser modificados.
Debemos enviar el identificador para ser enviado de regreso para ser modificados.
Utilizaremos la misma vista de la alta para desplegar los datos para ser eliminados.
Hay que tener mucho cuidado en mantener la integridad referencial.
Añadir un botón para lanzar la vista del filtro.
Crear la vista de los filtros.
Recuperar y armar el filtro.
Recuperar los mismos (variables de sesión).
Extraer y desplegar los datos filtrados.
Crear un botón para quitar el filtro.
Añadir un botón para lanzar la vista del filtro.
Crear la vista de los filtros.
Recuperar los mismos (variables de sesión).
Extraer y desplegar los datos filtrados.
Crear un botón para quitar el filtro.
¿Algo para mejorar en esta sección?
¿Algún comentario o aporte?
Tus comentarios son muy importantes y seguiré trabajando para que puedas calificar este curso con 5 estrellas.
Crearemos los archivos Modelo+Vista+Controlador
Crearemos el método de alta y la vista correspondiente.
Preparar la vista para añadir una cuenta.
Un proceso muy importante es recibir en el controlador la información de la vista y validarla o procesarla, antes de ser enviada al Modelo.
Una vez que hayamos validado nuestros datos, estamos listos para su inserción a nuestra tabla.
Utilizaremos la misma vista de la alta para desplegar los datos para ser modificados.
Debemos enviar el identificador para ser enviado de regreso para ser modificados.
Utilizaremos la misma vista de la alta para desplegar los datos para ser eliminados.
Hay que tener mucho cuidado en mantener la integridad referencial.
¿Algo para mejorar en esta sección?
¿Algún comentario o aporte?
Tus comentarios son muy importantes y seguiré trabajando para que puedas calificar este curso con 5 estrellas.
Los movimientos son el corazón del sistema.
Reunimos una categoría (por ejemplo, Renta) con una cuenta (por ejemplo, efectivo).
Actualizamos la cuenta (cargo o abono).
El presupuesto no se actualiza, lo calcularemos.
$sql = "SELECT m.id as id, m.usuario as usuario, m.tipo as tipo, ";
$sql.= "m.fecha as fecha, m.nota as nota, ";
$sql.= "ca.categoria as categoriaNombre, cu.cuenta as cuentaNombre ";
$sql.= "FROM movimientos as m, cuentas as cu, categorias as ca ";
$sql.= "WHERE m.categoria=ca.id AND ";
$sql.= "m.cuenta=cu.id AND ";
$sql.= "m.usuario=".$usuario.$filtro;
$sql.= " LIMIT ".$inicio.", ".$tamano;
En varios procesos del sistema vamos a necesitar la lectura de cuentas, categorías y sus tipos, por lo cual será mejor .
Crearemos la vista CRUD para la captura de los movimientos.
Recibiremos los datos de la vista, los validamos y los insertamos en la base de datos.
Una vez validada la información se envía la misma al Modelo para ser insertada en la tabla.
Ajustaremos la vista.
Cuando añadimos un movimiento debemos ajustar el saldo en las cuentas.
Utilizaremos la misma vista de la alta para desplegar los datos para ser modificados.
Debemos enviar el identificador para ser enviado de regreso para ser modificados.
Primero debemos “deshacer” el movimiento.
Recibir los datos y volver a modificar los saldos.
Primero debemos “deshacer” el movimiento.
Borrar el movimiento.
Crear la vista y los métodos para el filtro.
Por medio de los datos de la vista armaremos la cadena para el filtro.
Por medio de los datos de la vista armaremos la cadena para el filtro.
Simplifiquemos los mensajes al usuario como correcto, incorrecto, etc.
Con una opción muy sencilla podemos descargar los movimientos en formato CSV.
header('Content-Type: text/plain');
header('Content-Disposition: attachment;filename='.$salida);
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
fputcsv($output, $encabezados);
Los traspasos son movimientos entre cuentas, por ejemplo:
El pago de la tarjeta de crédito (disminuye tu deuda, disminuye tu efectivo).
El retiro de la tarjeta de débito (disminuye la cuenta de débito, aumenta tu efectivo).
El retiro de una tarjeta de crédito (aumenta tu deuda, aumenta tu efectivo).
Necesitamos integrar los números de cuenta.
Copiaremos una vista de otro objeto o instancia para el proceso de Altas-Bajas-Cambios de las transferencias.
Para realizar un traspaso es importante conocer los saldos de las cuentas.
Verificaremos que el traspaso no sobrepase los saldos de las cuentas de efectivo.
Verificaremos que el traspaso no sobrepase los saldos de las cuentas de efectivo.
Una vez validado los datos, los insertaremos en la tabla y modificaremos las cuentas.
Crearemos la vista para filtrar los traspasos.
Crearemos la cadena para el filtro y la cadena de ordenación.
Una vez creada la cadena, la aplicaremos al Query .
El alumno :
Creará la base de datos y un proceso completo de altas, bajas y cambios (ABC o CRUD) para las diferentes tablas.
Aprenderá a paginar una consulta de una tabla grande.
Creará las otras páginas para las Altas, Bajas y Cambios o CRUD.
¿Algo para mejorar en esta sección?
¿Algún comentario o aporte?
Tus comentarios son muy importantes y seguiré trabajando para que puedas calificar este curso con 5 estrellas.
El presupuesto nos permite controlar nuestros gastos:
Calcularemos los gastos por cada una de las categorías.
Obviamente sólo es una herramienta de control, podemos gastar lo que sea.
Necesitamos integrar los números de cuenta.
SELECT sum(movimientos.monto) as gasto from movimientos
LEFT join categorias on categorias.id = movimientos.categoria
Group by movimientos.categoria;
Definiremos la tabla del presupuesto y crearemos la vista del detalle.
Recibimos el número de categoría, leeremos el detalle de los movimientos y los relacionaremos con el presupuesto.
En la pantalla de detalle podemos ir calculando el presupuesto de la categoría.
Descargaremos los presupuestos a un archivo CSV.
¿Algo para mejorar en esta sección?
¿Algún comentario o aporte?
Tus comentarios son muy importantes y seguiré trabajando para que puedas calificar este curso con 5 estrellas.
Las cuentas por cobrar son facturas o recibos generados por alguna actividad realizada y que queda pendiente por ser pagada.
Las CXC no entran a nuestra contabilidad hasta que son pagadas.
Necesitamos integrar las cuentas por cobrar.
Insertaremos el registro en la tabla de cuentas por cobrar.
Necesitamos las cuentas para saber en cuál nos pagarán, o si es un pago en efectivo.
Debemos modificar el registro de la cxc, crear un registro de movimiento y actualizar la cuenta.
Primero debemos recuperar la categoría de la transferencia.
Creamos el movimiento.
Actualizamos la cuenta.
Sólo podemos cancelar una cuenta por cobrar que esté pendiente.
En el caso de las cuentas por cobrar, por ser relativamente independientes, es mejor depurarlas:
copiarlas en un formato CSV
Después borrarlas.
El alumno :
Creará la base de datos y un proceso completo de altas, bajas y cambios (ABC o CRUD) para las diferentes tablas.
Aprenderá a paginar una consulta de una tabla grande.
Creará las otras páginas para las Altas, Bajas y Cambios o CRUD.
¿Algo para mejorar en esta sección?
¿Algún comentario o aporte?
Tus comentarios son muy importantes y seguiré trabajando para que puedas calificar este curso con 5 estrellas.
En el registro del usuario podemos almacenar la configuración de las categorías de traspasos, préstamos, cuentas por pagar, etc.
Crearemos los campos para la configuración:
traspasos
cxc
ahorro
prestamoRecibido
pagoPrestamoRecibido
prestamoOtorgado
pagoPrestamoOtorgado
periodo
Validaremos el registro en la vista de configuración.
Una vez modificadas las cuentas, debemos de modificar la variable de sesión de “usuario”.
Antes de entrar a cualquier proceso debemos de validar si tenemos las categorías correspondientes.
Crearemos una vista para modificar los datos del usuario.
Validaremos la información del perfil del usuario antes de ser modificado.
Una vez que validemos los datos, debemos de modificarlos en la base de datos.
¿Algo para mejorar en esta sección?
¿Algún comentario o aporte?
Tus comentarios son muy importantes y seguiré trabajando para que puedas calificar este curso con 5 estrellas.
Una aplicación que es muy recurrente en Internet es el desarrollo de una para el manejo de gastos personales. 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.