
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
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.
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.
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.
En este video instalaremos el paquete MAMP en una computadora Windows
Revisemos una función que es importante que es el phpinfo(), que bueno por lo general, pues lo utilizamos de vez en cuando, generalmente al principio para verificar nuestra versión de PHP y alguna librería que nos haga falta instalar o que tengamos dudas si está instalada.
PHPDoc es un conjunto de reglas para documentar nuestros programas.
El patrón de diseño (de software) MVC se encarga de separar la “lógica de negocio” de la “interfaz de usuario” y es el más utilizado en aplicaciones web, ya que facilita la funcionalidad, mantenibilidad y escalabilidad del sistema.
MVC divide las aplicaciones en tres niveles de abstracción:
Modelo: es la lógica de negocios. Es decir las clases y métodos que se comunican directamente con la base de datos.
Vista: es la encargada de mostrar la información al usuario, con de forma gráfica y legible.
Controlador: el intermediario entre la vista y el modelo, se encarga de controlar las interacciones del usuario en la vista, pide los datos al modelo y los devuelve de nuevo a la vista para que esta los muestre al usuario. Es decir las llamadas a clases y métodos, y los datos recibidos de formularios.
clientes
configuracion
estadocliente
estadomecanico
estadoordenreparacion
estadousuario
facturas
generos
mecanicos
ordenalmacen
ordenalmacendetalle
ordenreparacion
piezas
seguimientos
tipomecanico
tipousuario
usuarios
vehiculos
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):
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
MVC divide las aplicaciones en tres niveles de abstracción: Modelo-Vista-Controlador
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.
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.
taller/controlador/metodo/param1/param2
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.
taller/controlador/metodo/param1/param2
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.
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-left
form-control
btn
btn-info
Crear las otras vistas: Encabezado y Pie de páginaDividiremos la vista en un encabezado y en un pie de página para utilizarlos en las diferentes vistas.
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.
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
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.
Debemos primero “armar” la vista con los datos necesarios.
Crear la vista con los campos.
Regresar los mismos al controlador y validarlos.
Insertarlos en la base de datos.
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.
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.
Debemos primero “armar” la vista con los datos necesarios.
Crear la vista con los campos.
Regresar los mismos 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.
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.
Debemos primero “armar” la vista con los datos necesarios.
Crear la vista con los campos.
Regresar los mismos 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.
Necesitamos un método para “armar” la vista.
Aprovecharemos la vista de “Alta” para modificar.
Necesitamos un método para “armar” la vista.
Enviaremos los datos al método “alta”.
Aprovecharemos la vista de “Alta” para mostrar el registro antes de borrarse.
Necesitamos un método para “armar” la vista de baja.
En nuestro caso, la baja será lógica, no física.
Debemos validar que el usuario esté activo.
Actualizar la fecha del login.
Enviarlo a diferente menú.
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
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
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
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
Arrastrar la página donde se modifica
Crearemos los archivos para el Modeo, las Vistas y el Controlador.
id,
tipoUsuario,
nombres,
apellidos,
direccion,
telefono,
correo,
clave,
genero,
estadoUsuario
Crearemos la vista con los siguientes campos:
id,
tipoUsuario,
nombres,
apellidos,
direccion,
telefono,
correo,
clave,
genero,
estadoUsuario
Debemos primero “armar” la vista con los datos necesarios.
Crear la vista con los campos.
Regresar los mismos 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.
Aprovecharemos la vista de “Alta” para mostrar el registro antes de borrarse.
Necesitamos un método para “armar” la vista de baja.
En nuestro caso, la baja será lógica, no física.
Crearemos los archivos del patrón de diseño Modelo-Vista-Controlador para el objeto de Clientes.
Necesitamos crear la vista de “Alta” con los siguientes campos:
id
nombres
apellidos
razonSocial
direccion
telefono
rfc
correo
clave
estado
Realizaremos el proceso de validación y creación de la clave de acceso temporal.
Aprovecharemos la vista de “Alta” para modificar.
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.
En nuestro caso, la baja será lógica, no física.
Crearemos los archivos del patrón de diseño Modelo-Vista-Controlador para el objeto de Vehículos.
Necesitamos crear la vista de “Alta” con los siguientes campos:
Id
Marca
Modelo
Color
Anio
Placas
idCliente
Realizaremos el proceso de validación y creación de la clave de acceso temporal.
Aprovecharemos la vista de “Alta” para modificar.
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.
En nuestro caso, la baja será lógica, no física.
Crear los archivos Modelo-Vista-Controlador del objeto Orden de reparación
Necesitamos crear la vista de “Alta” con los siguientes campos:
id,
idVehiculo,
idMecanico,
fechaIngreso,
fechaSalida,
kilometraje,
gato,
herramientas,
triangulos,
Realizaremos el proceso de validación.
Realizaremos el proceso de inserción en la base de datos.
Aprovecharemos la vista de “Alta” para modificar.
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.
En nuestro caso, la baja será lógica, no física.
Aprovecharemos la vista de “Alta” para mostrar el registro antes de borrarse.
Necesitamos un método para “armar” la vista para mostrar la orden de reparación.
Aprovecharemos la vista de “Alta” para mostrar el registro antes de borrarse.
Necesitamos un método para “armar” la vista para mostrar la orden de reparación.
Crear los archivos de la vista, modelo y controlador para la Orden de Almacén.
Necesitamos crear la vista de “Alta” con los siguientes campos:
id,
idOrdenReparacion,
costo,
observacion
Crearemos el registro para la orden de almacén y recuperaremos el número de registro creado.
altaOrdenAlmacenDetalle: creo nueva orden de almacén
anadirPieza: preparo y lanzo pieza
ordenAlmacenAltaPiezaVista: doy de alta la pieza
anadirPieza: preparo y lanzo pieza
ordenAlmacenAltaPiezaVista: doy de alta la pieza
altaOrdenAlmacenPieza: Añado pieza
ordenAlmacenAltaPiezaVista: doy de alta la pieza
altaOrdenAlmacenPieza: Añado pieza
ordenAlmacenMostrarVista: despliego la órden de almacén
altaOrdenAlmacenPieza: Añado pieza
ordenAlmacenMostrarVista: despliego la órden de almacén
anadeOrdenAlmacenPieza: añado pieza
calcularTotal($idOrdenAlmacen)
actualizarTotal($idOrdenAlmacen,$total)
getOrdenAlmacenDetalle($idOrdenAlmacen)
actualizarInventario(idPieza,cantidad)
caratula()
cancelarOrdenAlmacen(string $idOrdenAlmacen=''):void
borrarOrdenAlmacen(string $idOrdenAlmacen=''):void
$this->modelo->bajaLogica($idOrdenAlmacen)
$this->modelo->borrarPiezasOrdenAlmacen($idOrdenAlmacen)
borrarPieza
getPiezaDetalle(string $id=''):array
ordenAlmacenBajaPiezaVista
borrarOrdenAlmacenPieza()
desplegarOrdenAlmacen
getId($idOrdenAlmacen);
getOrdenAlmacenDetalle($idOrdenAlmacen);
ordenAlmacenDesplegarVista.php
Borraremos de forma lógica el registro “maestro” y de forma física los detalles.
Borraremos de forma lógica el registro “maestro” y de forma física los detalles.
Leeremos el detalle de las órdenes de almacén para ser desplegadas en la vista.
Crearemos el método para leer las “piezas” relacionadas a la orden de reparación.
Desplegaremos las piezas en la vista de Muestra.
Crear los archivos Vista-Modelo-Controlador para el objeto de Seguimientos.
Vamos a llamar a otra carátula para crear y visualizar los seguimientos.
Las imágenes las subiremos a una carpeta llamada “fotos” en public.
En la segunda carátula tendremos el botón de Alta de un seguimiento con el siguiente registro:
id
idOrdenReparacion
fecha
observacion
baja
Recuperaremos la información, la validaremos y lo prepararemos los archivos de imágenes.
Los archivos de las imágenes los encontraremos en el arreglo ambiental $_FILES:
Modificaremos el registro de los seguimientos en la vista de “Alta”.
Las imágenes las modificaremos posteriormente.
Para poder visualizar las imágenes, crearemos una nueva vista: seguimientosArchivosVista.
Para poder visualizar las imágenes, crearemos una nueva vista: seguimientosArchivosVista.
Borraremos la imagen en forma definitiva.
Vamos a llamar a otra carátula para crear y visualizar los Salidas.
$data = $this->modelo->getOrdenReparacion($idOrdenReparacion);
$piezas = $this->modelo->getPiezas($idOrdenReparacion);
id,
idCliente,
idOrdenReparacion,
manoObra,
materiales,
otro,
iva,
total,
observacion
Cliente
Vehiculo
Materiales
Mano de obra
Cliente
Vehiculo
Materiales
Mano de obra
Antes de lanzar la factura, desplegaremos un mensaje de advertencia.
Pasaremos los valores de los costos de Mano de obra por medio de la URL.
Para evitar los espacios en blanco en las observaciones, utilizaremos la rutina de encriptación.
Utilizarems la librería gratuita FPDF.
Crearemos una clase Imprimir para construir el documento.
Armaremos las cadenas para imprimir la factura.
Por medio de los comandos de FPDF como:
Image
SetFont('Arial','B',15);
SetMargins(10,10,10);
MultiCell(190,6,utf8_decode($this->razonSocial),0,'L');
Line(10, 54, 200, 54);
Ln(4);
Esta iconv() en PHP se utiliza para convertir una cadena de una codificación de caracteres a otra.
Una aplicación que es muy recurrente en Internet es el desarrollo de una aplicación para el control de taller mecánico. 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.