Tironemota

PHP

Facturación Pág. 1

Registro de clientes con PHP y MySql - 25

Ver sistema

Base de datos

--
-- Base de datos: `facturacion`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `cliente`
--

CREATE TABLE IF NOT EXISTS `cliente` (
  `idcliente` int(11) NOT NULL AUTO_INCREMENT,
  `nit` int(11) DEFAULT NULL,
  `nombre` varchar(80) DEFAULT NULL,
  `telefono` int(11) DEFAULT NULL,
  `direccion` text,
  PRIMARY KEY (`idcliente`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `detallefactura`
--

CREATE TABLE IF NOT EXISTS `detallefactura` (
  `correlativo` bigint(11) NOT NULL AUTO_INCREMENT,
  `nofactura` bigint(11) DEFAULT NULL,
  `codproducto` int(11) DEFAULT NULL,
  `cantidad` int(11) DEFAULT NULL,
  `preciototal` decimal(10,2) DEFAULT NULL,
  PRIMARY KEY (`correlativo`),
  KEY `codproducto` (`codproducto`),
  KEY `nofactura` (`nofactura`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `detalle_temp`
--

CREATE TABLE IF NOT EXISTS `detalle_temp` (
  `correlativo` int(11) NOT NULL AUTO_INCREMENT,
  `nofactura` bigint(11) NOT NULL,
  `codproducto` int(11) NOT NULL,
  `cantidad` int(11) NOT NULL,
  `preciototal` decimal(10,2) NOT NULL,
  PRIMARY KEY (`correlativo`),
  KEY `nofactura` (`nofactura`),
  KEY `codproducto` (`codproducto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `entradas`
--

CREATE TABLE IF NOT EXISTS `entradas` (
  `correlativo` int(11) NOT NULL AUTO_INCREMENT,
  `codproducto` int(11) NOT NULL,
  `fecha` datetime NOT NULL,
  `cantidad` int(11) NOT NULL,
  `precio` decimal(10,2) NOT NULL,
  PRIMARY KEY (`correlativo`),
  KEY `codproducto` (`codproducto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `factura`
--

CREATE TABLE IF NOT EXISTS `factura` (
  `nofactura` bigint(11) NOT NULL AUTO_INCREMENT,
  `fecha` datetime NOT NULL,
  `usuario` int(11) DEFAULT NULL,
  `codcliente` int(11) DEFAULT NULL,
  `totaltactura` decimal(10,2) DEFAULT NULL,
  PRIMARY KEY (`nofactura`),
  KEY `usuario` (`usuario`),
  KEY `codcliente` (`codcliente`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `producto`
--

CREATE TABLE IF NOT EXISTS `producto` (
  `codproducto` int(11) NOT NULL AUTO_INCREMENT,
  `descripcion` varchar(100) DEFAULT NULL,
  `proveedor` int(11) DEFAULT NULL,
  `precio` decimal(10,2) DEFAULT NULL,
  `existencia` int(11) DEFAULT NULL,
  `foto` text,
  PRIMARY KEY (`codproducto`),
  KEY `proveedor` (`proveedor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `proveedor`
--

CREATE TABLE IF NOT EXISTS `proveedor` (
  `codproveedor` int(11) NOT NULL AUTO_INCREMENT,
  `proveedor` varchar(100) DEFAULT NULL,
  `contacto` varchar(100) DEFAULT NULL,
  `telefono` bigint(11) DEFAULT NULL,
  `direccion` text,
  PRIMARY KEY (`codproveedor`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;

--
-- Volcado de datos para la tabla `proveedor`
--

INSERT INTO `proveedor` (`codproveedor`, `proveedor`, `contacto`, `telefono`, `direccion`) VALUES
(1, 'BIC', 'Claudia Rosales', 789877889, 'Avenida las Americas'),
(2, 'CASIO', 'Jorge Herrera', 565656565656, 'Calzada Las Flores'),
(3, 'Omega', 'Julio Estrada', 982877489, 'Avenida Elena Zona 4, Guatemala'),
(4, 'Dell Compani', 'Roberto Estrada', 2147483647, 'Guatemala, Guatemala'),
(5, 'Olimpia S.A', 'Elena Franco Morales', 564535676, '5ta. Avenida Zona 4 Ciudad'),
(6, 'Oster', 'Fernando Guerra', 78987678, 'Calzada La Paz, Guatemala'),
(7, 'ACELTECSA S.A', 'Ruben Pérez', 789879889, 'Colonia las Victorias'),
(8, 'Sony', 'Julieta Contreras', 89476787, 'Antigua Guatemala'),
(9, 'VAIO', 'Felix Arnoldo Rojas', 476378276, 'Avenida las Americas Zona 13'),
(10, 'SUMAR', 'Oscar Maldonado', 788376787, 'Colonia San Jose, Zona 5 Guatemala'),
(11, 'HP', 'Angel Cardona', 2147483647, '5ta. calle zona 4 Guatemala');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `rol`
--

CREATE TABLE IF NOT EXISTS `rol` (
  `idrol` int(11) NOT NULL AUTO_INCREMENT,
  `rol` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`idrol`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `usuario`
--

CREATE TABLE IF NOT EXISTS `usuario` (
  `idusuario` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `correo` varchar(100) DEFAULT NULL,
  `usuario` varchar(15) DEFAULT NULL,
  `clave` varchar(100) DEFAULT NULL,
  `rol` int(11) DEFAULT NULL,
  PRIMARY KEY (`idusuario`),
  KEY `rol` (`rol`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Restricciones para tablas volcadas
--

--
-- Filtros para la tabla `detallefactura`
--
ALTER TABLE `detallefactura`
  ADD CONSTRAINT `detallefactura_ibfk_1` FOREIGN KEY (`nofactura`) REFERENCES `factura` (`nofactura`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `detallefactura_ibfk_2` FOREIGN KEY (`codproducto`) REFERENCES `producto` (`codproducto`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Filtros para la tabla `detalle_temp`
--
ALTER TABLE `detalle_temp`
  ADD CONSTRAINT `detalle_temp_ibfk_1` FOREIGN KEY (`nofactura`) REFERENCES `factura` (`nofactura`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `detalle_temp_ibfk_2` FOREIGN KEY (`codproducto`) REFERENCES `producto` (`codproducto`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Filtros para la tabla `entradas`
--
ALTER TABLE `entradas`
  ADD CONSTRAINT `entradas_ibfk_1` FOREIGN KEY (`codproducto`) REFERENCES `producto` (`codproducto`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Filtros para la tabla `factura`
--
ALTER TABLE `factura`
  ADD CONSTRAINT `factura_ibfk_1` FOREIGN KEY (`usuario`) REFERENCES `usuario` (`idusuario`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `factura_ibfk_2` FOREIGN KEY (`codcliente`) REFERENCES `cliente` (`idcliente`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Filtros para la tabla `producto`
--
ALTER TABLE `producto`
  ADD CONSTRAINT `producto_ibfk_1` FOREIGN KEY (`proveedor`) REFERENCES `proveedor` (`codproveedor`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Filtros para la tabla `usuario`
--
ALTER TABLE `usuario`
  ADD CONSTRAINT `usuario_ibfk_1` FOREIGN KEY (`rol`) REFERENCES `rol` (`idrol`) ON DELETE CASCADE ON UPDATE CASCADE;

Conexion

Creamos archivo Archivo PHP conex.php dentro de la carpeta Carpeta conexion

conex.php

<?php $servername = "localhost"; // NOMBRE DEL SERVIDOR $database = "facturacion"; // NOMBRE DE LA BASE DE DATOS $username = "root"; // NOMBRE DEL USUARIO $password = ""; // PASSWORD DE USUARIO // Crear conexión $conexion = @mysqli_connect($servername,$username,$password,$database); // Chequeo la conepción if(!$conexion){ echo "Error en la conexión"; } ?>

Iniciar sesión

Creamos archivo Archivo PHP index.php

Iniciar sesión

index.php

<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Login | Sistema de facturación</title> <link rel="stylesheet" type="text/css" href="css/stilo.css"> </head> <body> <section id="container"> <form action="" method="post"> <h3>Iniciar sesión</h3> <img src="img/login.png" alt="Login"> <input type="text" name="usuario" placeholder="Usuario"> <input type="password" name="clave" placeholder="Contraseña"> <div class="alert"></div> <input type="submit" value="INGRESAR"> </form> </section> </body> </html>

Creamos archivo Archivo CSS stilo.css y lo guardamos en carpeta Carpeta css css

*{ margin: 0;padding: 0;box-sizing: border-box; }
h3{ font-family: Arial;font-size: 25pt;letter-spacing: 1px;width: 100%;background: #2980b9;padding: 15px;color: #FFF;text-align: center;text-transform: uppercase; }
#container{ background: #5d6d7e;width: 100%;height: 100vh;display: -webkit-flex;display: flex;justify-content: center;align-items: center; }
#container form{ background: #FFF;padding: 10px;width: 400px; }
#container form img{ margin: 15px auto;text-align: center;display: block;max-height: 150px;width: auto; }
#container form input{ width: 90%;padding: 5px;font-size: 16pt;display: block;margin: 25px auto;border-radius: 5px;border: 1px solid #85929e;text-align: center; }
#container form input[type="submit"]{ background: #52be80;padding: 10px;color: #FFF;letter-spacing: 1px;border: 0;cursor: pointer; }
.alert{ font-family: Arial;font-size: 16px;text-align: center; }

Tipo de usuario

Creamos los tipos de usuario desde la ventana de SQL de phpMyAdmin

INSERT INTO `rol` (`idrol`, `rol`) VALUES
(NULL, 'Administrador'),
(NULL, 'Supervisor'),
(NULL, 'Vendedor');
idrolrol
1Administrador
2Supervisor
3Vendedor

Usuario

Creamos nuestro primer usuario que es el administrador desde la ventana de SQL de phpMyAdmin

INSERT INTO `usuario` (`idusuario`, `nombre`, `correo`, `usuario`, `clave`, `rol`) VALUES
(1, 'Tirone', 'tironemota@gmail.com', 'tironemota', 'tironemota', 1);

Para incriptar la clave en phpMyAdmin

phpMyAdmin

Pulsamos Editar y en la columna de Función selecionamos md5 y pulsamos Continuar

phpMyAdmin

Listo ya tenemos la clave encriptada

phpMyAdmin

Sesión

Abrimos nuestro archivo Archivo PHP index.php

index.php

<?php $alert=""; // CREAMOS SESION session_start(); // SI EXISTE SESION ACTIVA if(!empty($_SESSION['active'])){ header('Location: sistema/'); } else { // SI PULSO EL BOTON INGRESAR if(!empty($_POST)){ // SI ESTA VACIO EL CAMPO USUARIO O CLAVE if(empty($_POST['usuario']) || empty($_POST['clave'])){ $alert = "Ingrese su usuario y clave."; // CASO CONTRARIO } else { // NOS CONECTAMOS A LA BASE DE DATOS require_once('conexion/conex.php'); // RECUPERAMOS LOS DATOS Y ELIMINO LOS CARACTERES RAROS $user = mysqli_real_escape_string($conexion,$_POST['usuario']); // ENCRIPTAMOS LA CONTRASEÑA $pass = md5(mysqli_real_escape_string($conexion,$_POST['clave'])); // CONSULTA A EJECUTAR $query = mysqli_query($conexion,"SELECT * FROM usuario WHERE usuario = '$user' AND clave = '$pass'"); // RESULTADO DE LA CONSULTA $resul = mysqli_num_rows($query); // SI EL RESULTADO ES MAYOR A CERO if($resul > 0){ // GUARDAMOS LOS DATOS EN UN ARRAY $data = mysqli_fetch_array($query); // CONFIRMAR QUE CONTIENE EL ARRAY //print_r($data); // CREAMOS VARIABLES DE SESION $_SESSION['active'] = true; $_SESSION['iduser'] = $data['idusuario']; $_SESSION['nombre'] = $data['nombre']; $_SESSION['email'] = $data['correo']; $_SESSION['user'] = $data['usuario']; $_SESSION['rol'] = $data['rol']; // REDIRECIONAMOS header('Location: sistema/'); } else { $alert = "El usuario o la clave no es valida."; // DESTRUIMOS LA SESION session_destroy(); } } } } ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Login | Sistema de facturación</title> <link rel="stylesheet" type="text/css" href="css/stilo.css"> </head> <body> <section id="container"> <form action="" method="post"> <h3>Iniciar sesión</h3> <img src="img/login.png" alt="Login"> <input type="text" name="usuario" placeholder="Usuario"> <input type="password" name="clave" placeholder="Contraseña"> <div class="alert"><?php echo isset($alert) ? $alert: ""; ?></div> <input type="submit" value="INGRESAR"> </form> </section> </body> </html>

Sistema

Creamos archivo Archivo PHP index.php dentro de la carpeta Carpeta sistema

Sistema de facturación

sistema/index.php

<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <title>Sistema Ventas</title> </head> <body> <header> <div class="header"> <h1>Sistema Facturación</h1> <div class="optionsBar"> <p>Venezuela, 13 junio de 2022</p> <span>|</span> <span class="user">Tirone Mota</span> <img class="photouser" src="img/user.png" alt="Usuario"> <a href="salir.php"><img class="close" src="img/salir.png" alt="Salir del sistema" title="Salir"></a> </div> </div> <nav> <ul> <li><a href="#">Inicio</a></li> <li class="principal"> <a href="#">Usuarios</a> <ul> <li><a href="#">Nuevo Usuario</a></li> <li><a href="#">Lista de Usuarios</a></li> </ul> </li> <li class="principal"> <a href="#">Clientes</a> <ul> <li><a href="#">Nuevo Cliente</a></li> <li><a href="#">Lista de Clientes</a></li> </ul> </li> <li class="principal"> <a href="#">Proveedores</a> <ul> <li><a href="#">Nuevo Proveedor</a></li> <li><a href="#">Lista de Proveedores</a></li> </ul> </li> <li class="principal"> <a href="#">Productos</a> <ul> <li><a href="#">Nuevo Producto</a></li> <li><a href="#">Lista de Productos</a></li> </ul> </li> <li class="principal"> <a href="#">Facturas</a> <ul> <li><a href="#">Nuevo Factura</a></li> <li><a href="#">Facturas</a></li> </ul> </li> </ul> </nav> </header> <section id="container"> <h1>Bienvenido al sistema</h1> </section> </body> </html>

Se requiere del contenedor de nueva tipografía dentro Carpeta sistema

Carpeta fonts
        - GothamBold.css
        - GothamBold.eot
        - GothamBold.otf
        - GothamBold.svg
        - GothamBold.ttf
        - GothamBold.woff
        - GothamBook.css
        - GothamBook.eot
        - GothamBook.svg
        - GothamBook.ttf

Creamos archivo Archivo CSS estilos.css dentro de la carpeta Carpeta css de la carpeta Carpeta sistema

@import url(../fonts/GothamBook.css);
@import url(../fonts/GothamBold.css);
*{margin: 0;padding: 0;box-sizing: border-box;}
body{background: #ededed;}
h1, h2, h3, h4, h5, h6 {font-family: 'arial';font-weight: bold;letter-spacing: 1px;}
h1{font-size: 26px;}
h2{font-size: 20px;}
h3{font-size: 18px;}
h4{font-size: 16px;}
h5{font-size: 14px;}
h6{font-size: 12px;}
p{font-family: 'arial';letter-spacing: 2px;font-size: 14px;line-height: 20px;}
a{text-decoration: none;font-family: arial;letter-spacing: 1px;}
span {font-family: 'GothamBook';letter-spacing: 1px;font-size: 14px;line-height: 20px;}
header{position: fixed;width: 100%;}
.header{color: #FFF;background: #0a4661;height: 35px;display: -webkit-flex;display: -moz-flex;display: -ms-flex;display: -o-flex;display: flex;justify-content: space-between;align-items: center;padding: 10px;}
.optionsBar{display: -webkit-flex;display: -moz-flex;display: -ms-flex;display: -o-flex;display: flex;justify-content: center;align-items: center;}
.optionsBar span {color: #FFF;font-size: 11pt;font-family: 'GothamBook';text-transform: uppercase;margin-left: 30px;}
.photouser {margin-left: 30px;width: 25px;height: 25px;}
.close{width: 25px;height: 25px;}
.optionsBar a {display: -webkit-flex;display: -moz-flex;display: -ms-flex;display: -o-flex;display: flex;margin-left: 30px;}
nav ul{background: #058167;list-style: none;display: -webkit-flex;display: -moz-flex;display: -ms-flex;display: -o-flex;display: flex;justify-content: left;align-items: center;}
nav ul > li a{position: relative;}
nav a{color: #FFF;display: block;font-size: 10pt;font-family: 'GothamBook';padding: 15px 30px;text-transform: uppercase;letter-spacing: 2px;transition: background .5s;border-right: 1px solid #319B8F;}
nav .principal > a{background: url(../images/arrow_bottom.png) no-repeat;background-position-x: 0%;background-position-y: 0%;background-size: auto auto;background-position: 94% center;background-size: 10px;}
nav ul li:hover ul{display: block;}
nav li ul{background: #2d9872;display: none;flex-direction: column;position: absolute;align-items: flex-start;border-radius: 0 0 10px 10px;}
nav li ul a{position: relative;padding: 10px 30px;border-right: initial;}
nav li ul a:hover{background: #147556;}
nav li ul li:last-child{border-radius: 0 0 10px 10px;overflow: hidden;}
#container{padding: 90px 15px 15px;}

Salir

Creamos archivo Archivo PHP salir.php dentro de la carpeta Carpeta sistema

salir.php

<?php // CREAMOS SESION session_start(); // DESTRUIMOS LA SESION session_destroy(); // REDIRECIONAMOS header('location: ../') ?>

Crear plantilla

Requerimos de un archivo contenedor de los script JavaScript, para lo cual creamos el archivo funcion.js (vacío por los momentos) y lo guardamos dentro de la carpeta js, que se encuentra dentro de la carpeta sistema

Creamos la carpeta incluir dentro de la carpeta sistema, será el contenedor de los archivos de la maqueta.

Crear archivo Archivo PHP script.php dentro carpeta Carpeta incluir, este archivo será el contenedor de los enlaces a los archivos CSS, JavaScript y PHP.

script.php

<link rel="stylesheet" type="text/css" href="css/estilos.css"> <script src="js/funcion.js"></script>

Crear archivo Archivo PHP nav.php dentro carpeta Carpeta incluir, este archivo será el contenedor del navegador de la página.

nav.php

<ul> <li><a href="#">Inicio</a></li> <li class="principal"> <a href="#">Usuarios</a> <ul> <li><a href="usuarioReg.php">Nuevo Usuario</a></li> <li><a href="usuarioLista.php">Lista de Usuarios</a></li> </ul> </li> <li class="principal"> <a href="#">Clientes</a> <ul> <li><a href="#">Nuevo Cliente</a></li> <li><a href="#">Lista de Clientes</a></li> </ul> </li> <li class="principal"> <a href="#">Proveedores</a> <ul> <li><a href="#">Nuevo Proveedor</a></li> <li><a href="#">Lista de Proveedores</a></li> </ul> </li> <li class="principal"> <a href="#">Productos</a> <ul> <li><a href="#">Nuevo Producto</a></li> <li><a href="#">Lista de Productos</a></li> </ul> </li> <li class="principal"> <a href="#">Facturas</a> <ul> <li><a href="#">Nuevo Factura</a></li> <li><a href="#">Facturas</a></li> </ul> </li> </ul> </nav>

Crear archivo Archivo PHP header.php dentro carpeta Carpeta incluir, este archivo será el contenedor de la cabecera de la página, incluiremos el archivo nav.php

header.php

<header> <div class="header"> <h1>Sistema Facturación</h1> <div class="optionsBar"> <p>Venezuela, 13 junio de 2022</p> <span>|</span> <span class="user">Tirone Mota</span> <img class="photouser" src="img/user.png" alt="Usuario"> <a href="salir.php"><img class="close" src="img/salir.png" alt="Salir del sistema" title="Salir"></a> </div> </div> <?php include('nav.php') ?> </header>

Crear archivo Archivo PHP footer.php dentro carpeta Carpeta incluir, este archivo será el contenedor del pie de página.

Creamos nuestra plantilla archivo Archivo PHP maq.php dentro de carpeta Carpeta sistema.
La plantilla y archivo Archivo PHP index.php de la carpeta Carpeta sistema será el código siguiente:

maq.php

<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Sistema Ventas</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <h1>Bienvenido al sistema</h1> </section> <?php include('incluir/footer.php') ?> </body> </html>

Privatizar página

Para privatizar nuestra página, solo debemos validar la variable de sesión en el archivo header.php

header.php

<?php // CREAMOS SESION session_start(); // SI SESION ACTIVA ESTA VACIA if(empty($_SESSION['active'])){ // REDIRIJO AL LONGEO header('Location: ../'); } ?> <header> <div class="header"> <h1>Sistema Facturación</h1> <div class="optionsBar"> <p>Venezuela, 13 junio de 2022</p> <span>|</span> <span class="user">Tirone Mota</span> <img class="photouser" src="img/user.png" alt="Usuario"> <a href="salir.php"><img class="close" src="img/salir.png" alt="Salir del sistema" title="Salir"></a> </div> </div> <?php include('nav.php') ?> </header>

Función fecha

Creamos archivo Archivo PHP fecha.php detro de la carpeta Carpeta incluir

fecha.php

<?php date_default_timezone_set('America/Caracas'); function fechaC(){ $mes = array("","Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"); return date('d')." de ". $mes[date('n')] . " de " . date('Y'); } ?>

Enlasamos el archivo fecha.php incluyendolo en el archivo script.php

script.php

<link rel="stylesheet" type="text/css" href="css/estilos.css"> <script src="js/funcion.js"></script> <?php include('fecha.php'); ?>

Llamamos la función en el archivo header.php

header.php

<?php // CREAMOS SESION session_start(); // SI SESION ACTIVA ESTA VACIA if(empty($_SESSION['active'])){ // REDIRIJO AL LONGEO header('Location: ../'); } ?> <header> <div class="header"> <h1>Sistema Facturación</h1> <div class="optionsBar"> <p>Venezuela, <?php echo fechaC(); ?></p> <span>|</span> <span class="user">Tirone Mota</span> <img class="photouser" src="img/user.png" alt="Usuario"> <a href="salir.php"><img class="close" src="img/salir.png" alt="Salir del sistema" title="Salir"></a> </div> </div> <?php include('nav.php') ?> </header>

Nombre usuario

Para mostrar el nombre del usuario longeado, nos valemos de la variable $_SESSION['user'], en el archivo header.php

header.php

<?php // CREAMOS SESION session_start(); // SI SESION ACTIVA ESTA VACIA if(empty($_SESSION['active'])){ // REDIRIJO AL LONGEO header('Location: ../'); } ?> <header> <div class="header"> <h1>Sistema Facturación</h1> <div class="optionsBar"> <p>Venezuela, <?php echo fechaC(); ?></p> <span>|</span> <span class="user"><?php echo $_SESSION['user']; ?></span> <img class="photouser" src="img/user.png" alt="Usuario"> <a href="salir.php"><img class="close" src="img/salir.png" alt="Salir del sistema" title="Salir"></a> </div> </div> <?php include('nav.php') ?> </header>

Registro de usuario

Registro de usuario

Abrimos archivo Archivo maq.php y Guardar como: usuarioReg.php.

usuarioReg.php

<?php // CONECTAMOS A BASE DE DATOS include('../conexion/conex.php'); // SI PULSARON EL BOTÓN if(!empty($_POST)){ $alert=''; // SI EXISTE UN CAMPO VACÍO if(empty($_POST['nombre']) || empty($_POST['correo']) || empty($_POST['usuario']) || empty($_POST['clave']) || empty($_POST['rol'])){ $alert = '<p class="nsg_error">Todos los campos son obligatorio.</p>'; }else{ // RECIBIMOS LAS VARIABLES $nombre = $_POST['nombre']; $email = $_POST['correo']; $user = $_POST['usuario']; // ENCRIPTAMOS LA CLAVE $clave = md5($_POST['clave']); $rol = $_POST{'rol'}; // CONSULTAMOS SI EXISTE USUARIO O CORREO $query = mysqli_query($conexion,"SELECT * FROM usuario WHERE usuario = '$user' OR correo = '$email'"); // RESULTADO DE LA CONSULTA $result = mysqli_fetch_array($query); // SI EXISTE REGISTRO if($result > 0){ $alert = '<p class="nsg_error">El correo o usuario ya existe.</p>'; // DE LO CONTRARIO } else { // ALMACENA EL REGISTRO $query_insert = mysqli_query($conexion,"INSERT INTO usuario (nombre,correo,usuario,clave,rol) VALUES ('$nombre','$email','$user','$clave','$rol')"); // VALIDAMOS if($query_insert){ $alert = '<p class="nsg_save">Usuario creado correctamente</p>'; } else { $alert = '<p class="nsg_error">Error al crear el usuario.</p>'; } } } } ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Registro de usuario</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <div class="form_register"> <h1>Registro de usuario</h1> <hr> <div class="alert"><?php echo isset($alert) ? $alert : ''; ?></div> <form> <label for="nombre">Nombre: </label> <input type="text" name="nombre" id="nombre" placeholder="Nombre completo"> <label for="correo">Correo eléctronico: </label> <input type="email" name="correo" id="correo" placeholder="Correo eléctronico"> <label for="usuario">Usuario: </label> <input type="text" name="usuario" id="usuario" placeholder="Usuario"> <label for="clave">Clave: </label> <input type="password" name="clave" id="clave" placeholder="Clave de acceso"> <label for="rol">Tipo de usuario: </label> <?php $query_rol = mysqli_query($conexion,"SELECT * FROM rol"); $result_rol = mysqli_num_rows($query_rol); ?> <select name="rol" id="rol"> <?php if($result_rol > 0){ while($rol = mysqli_fetch_array($query_rol)){ ?> <option value="<?php echo $rol['idrol'] ?>"><?php echo $rol['rol'] ?></option> <?php } } ?> </select> <input type="submit" value="Crear usuario" class="btn_save"> </form> </div> </section> <?php include('incluir/footer.php') ?> </body> </html>
/********** REGISTRO Y ACTUALIZAR USUARIO **********/
.form_register{ width: 450px;margin: auto; }
.form_register h1{ color: #3c93b0; }
hr{ border: 0;background: #ccc;height: 1px;margin: 10px 0;display: block; }
form{ background: #FFF;margin: auto;padding: 20px 50px;border: 1px solid #d1d1d1; }
label{ display: block;font-size: 12pt;font-family: 'GothamBook';margin: 15px auto 5px auto; }
input, select{ display: block;width: 100%;font-size: 11pt;padding: 5px;border: 1px solid #85929e;border-radius: 5px; }
.notItemOne option:first-child{ display: none; }
.btn_save{ font-size: 12pt;background: #12a4c6;padding: 10px;color: #FFF;letter-spacing: 1px;border: 0;cursor: pointer;margin: 15px auto; }
.alert{ width: 100%;background: #66e07d66;border-radius: 6px;margin: 20px auto; }
.nsg_error{ color: #e65656; }
.nsg_save{ color: #126e00; }
.alert p{ padding: 10px; }

Lista de usuarios

Lista de usuario

Abrimos archivo Archivo maq.php y Guardar como: usuarioLista.php.

usuarioLista.php

<?php // CONECTAMOS A BASE DE DATOS include('../conexion/conex.php'); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Lista de usuarios</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <h1>Lista de usuarios</h1> <a href="usuarioReg.php" class="btn_new">Crear usuario</a> <table> <tr> <th>ID</th> <th>Nombre</th> <th>Correo</th> <th>Usuario</th> <th>Rol</th> <th>Acciones</th> </tr> <?php $query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol"); $result = mysqli_num_rows($query); if($result > 0){ while ($data = mysqli_fetch_array($query)) { ?> <tr> <td><?php echo $data['idusuario'] ?></td> <td><?php echo $data['nombre'] ?></td> <td><?php echo $data['correo'] ?></td> <td><?php echo $data['usuario'] ?></td> <td><?php echo $data['rol'] ?></td> <td> <a href="usuarioEditar.php?id=<?php echo $data['idusuario'] ?>" class="link_edit">Editar</a> | <a href="usuarioElimina.php?id=<?php echo $data['idusuario'] ?>" class="link_delete">Eliminar</a> </td> </tr> <?php } } ?> </table> </section> <?php include('incluir/footer.php') ?> </body> </html>
/********** LISTA USUARIO **********/
#container h1{ font-size: 35px;display:inline-block; }
.btn_new{ display: inline-block;background-color: #239baa;color:#FFF;padding: 5px 25px;border-radius: 4px;margin: 20px; }
table{ border-collapse: collapse;font-size: 12pt;font-family: 'arial';width: 100%; }
table th{ text-align: left;padding: 10px;background: #3d7da8;color: #FFF; }
table tr:nth-child(odd){ background: #fff; }
table td{ padding: 10px; }
.link_edit{ color: #0ca4cd; }
.link_delete{ color: #f26b6b; }

Actualizar usuario

Actualizar usuario

Abrimos archivo Archivo maq.php y Guardar como: usuarioEditar.php.

usuarioEditar.php

<?php // CONECTAMOS A BASE DE DATOS include('../conexion/conex.php'); // SI PULSARON EL BOTÓN if(!empty($_POST)){ $alert=''; // SI EXISTE UN CAMPO VACÍO if(empty($_POST['nombre']) || empty($_POST['correo']) || empty($_POST['usuario']) || empty($_POST['rol'])){ $alert = '<p class="nsg_error">Todos los campos son obligatorio.</p>'; }else{ // RECIBIMOS LAS VARIABLES $idusuario = $_POST['idusuario']; $nombre = $_POST['nombre']; $email = $_POST['correo']; $user = $_POST['usuario']; // ENCRIPTAMOS LA CLAVE $clave = md5($_POST['clave']); $rol = $_POST{'rol'}; // CONSULTAMOS SI EXISTE USUARIO O CORREO $query = mysqli_query($conexion,"SELECT * FROM usuario WHERE (usuario = '$user' AND idusuario != '$idusuario') OR (correo = '$email' AND idusuario != '$idusuario')"); // RESULTADO DE LA CONSULTA $result = mysqli_fetch_array($query); // SI EXISTE REGISTRO if($result > 0){ $alert = '<p class="nsg_error">El correo o usuario ya existe.</p>'; // DE LO CONTRARIO } else { // VALIDAMO if(empty($_POST['clave'])){ $sql_update = mysqli_query($conexion,"UPDATE usuario SET nombre = '$nombre', correo = '$email', usuario = '$user', rol = '$rol' WHERE idusuario = '$idusuario'"); } else { $sql_update = mysqli_query($conexion,"UPDATE usuario SET nombre = '$nombre', correo = '$email', usuario = '$user', clave = '$clave', rol = '$rol' WHERE idusuario = '$idusuario'"); } // EVALUAMOS if($sql_update){ $alert = '<p class="nsg_save">Usuario actualizado correctamente</p>'; } else { $alert = '<p class="nsg_error">Error al actualizar el usuario.</p>'; } } } } // RECUPERAMOS LOS DATOS // SI NO EXIXTE ID if(empty($_GET['id'])){ header('Location: usuarioLista.php'); } // VALIDAR EXISTE USUARIO $iduser = $_GET['id']; $sql = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.idrol, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE idusuario = '$iduser'"); $resul_sql = mysqli_num_rows($sql); // SI NO EXISTE REGISTRO REDIRECCIONAMOS if($resul_sql == 0){ header('Location: usuarioLista.php'); // CASO CONTRARIO RECUPERO REGISTRO } else { while($data = mysqli_fetch_array($sql)){ $idusuario = $data['idusuario']; $nombre = $data['nombre']; $correo = $data['correo']; $usuario = $data['usuario']; $idrol = $data['idrol']; $rol = $data['rol']; $option = ''; if($idrol == 1){ $option = '<option value="'.$idrol.'" select>'.$rol.'</option>'; }else if($idrol == 2){ $option = '<option value="'.$idrol.'" select>'.$rol.'</option≫'; }else if($idrol == 3){ $option = '<option value="'.$idrol.'" select>'.$rol.'</option>'; } } } ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Actualizar usuario</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <div class="form_register"> <h1>Actualizar usuario</h1> <hr> <div class="alert"><?php echo isset($alert) ? $alert : ''; ?></div> <form action="" method="post"> <input type="hidden" name="idusuario" value="<?php echo $idusuario; ?>"> <label for="nombre">Nombre: </label> <input type="text" name="nombre" id="nombre" placeholder="Nombre completo" value="<?php echo $nombre; ?>"> <label for="correo">Correo eléctronico: </label> <input type="email" name="correo" id="correo" placeholder="Correo eléctronico" value="<?php echo $correo; ?>"> <label for="usuario">Usuario: </label> <input type="text" name="usuario" id="usuario" placeholder="Usuario" value="<?php echo $usuario; ?>"> <label for="clave">Clave: </label> <input type="password" name="clave" id="clave" placeholder="Clave de acceso"> <label for="rol">Tipo de usuario: </label> <?php $query_rol = mysqli_query($conexion,"SELECT * FROM rol"); $result_rol = mysqli_num_rows($query_rol); ?> <select name="rol" id="rol" class="notItemOne"> <?php echo $option; if($result_rol > 0){ while($rol = mysqli_fetch_array($query_rol)){ ?> <option value="<?php echo $rol['idrol'] ?>"><?php echo $rol['rol'] ?></option> <?php } } ?> </select> <input type="submit" value="Actualizar usuario" class="btn_save"> </form> </div> </section> <?php include('incluir/footer.php') ?> </body> </html>

Para evitar duplicación en lista de opciones, utilizaremos la clase notItemOne

Código HTML:
<select name="rol" id="rol" class="notItemOne">
 . . . . .

Estilos CSS:
.notItemOne option:first-child{ display: none; }

Eliminar registro

Eliminar usuario

Abrimos archivo Archivo maq.php y Guardar como: usuarioElimina.php.

usuarioElimina.php

<?php include('../conexion/conex.php'); if(!empty($_POST)){ $idusuario = $_POST['idusuario']; // ELIMINAR REGISTRO $query_delete = mysqli_query($conexion, "DELETE FROM usuario WHERE idusuario = '$idusuario'"); if($query_delete){ header('Location: usuarioLista.php'); } else { echo "Error al eliminar"; } } if(empty($_REQUEST['id'])){ header('Location: usuarioLista.php'); } else { $idusuario = $_REQUEST['id']; $query = mysqli_query($conexion,"SELECT u.nombre, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE u.idusuario = '$idusuario'"); $resul = mysqli_num_rows($query); if($resul > 0){ while($data = mysqli_fetch_array($query)){ $nombre = $data['nombre']; $usuario = $data['usuario']; $rol = $data['rol']; } } else { header('Location: usuarioLista.php'); } } ?> <!DOCTYPE html> <html lang="es"> <head>/span> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Eliminar usuario</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <div class="data_delete"> <h2>¿Está seguro de eliminar el siguiente registro?</h2> <p>Nombre: <span><?php echo $nombre; ?></span></p> <p>Usuario: <span><?php echo $usuario; ?></span></p> <p>Tipo de usuario: <span><?php echo $rol; ?></span></p> <form method="post" action=""> <input type="hidden" name="idusuario" value="<?php echo $idusuario; ?>"> <a href="usuarioLista.php" class="btn_cancel">Cancelar</a> <input type="submit" value="Aceptar" class="btn_ok"> </form> </div> </section> <?php include('incluir/footer.php') ?> </body> </html>
/********** ELIMINAR USUARIO **********/
.data_delete{ text-align: center; }
.data_delete h2{ font-size: 12pt; }
.data_delete span{ font-weight: bold;color:#4f72d4;font-size: 12pt; }
.btn_cancel, .btn_ok{ width: 125px;background: #478ba2;color:#FFF;display: inline-block;padding: 5px;border-radius: 5px;cursor: pointer;margin: 15px; }
.btn_cancel{ background: #42b343; }
.data_delete form{ background: initial;margin:auto;padding: 20px 50px;border: 0; }

Desactivar registro

En la mayoría de sistemas los datos no se eliminan, se desactivan con el fin de tener un historial.

Para tal fin agregar columna estatus a la tabla usuario con un valor inicial de 1 (uno).

1.- Vamos a phpMyAdmin / tabla usuario / Estructura de la tabla.
En Agregar columna, le desimos después de rol y pulsamos Continuar.

phpMyAdmin

2.- Nombre del campo estatus, de tipo INT, en Predeterminado seleccionamos Personalizado: y que empiece con valor 1. Pulsamos Guardar.

phpMyAdmin

Otra forma, es desde la ventana de SQL.

ALTER TABLE usuario ADD estatus INT NOT NULL DEFAULT 1 AFTER rol

Cada usuario nuevo al registrarse comenzara con el estatus 1. Por lo que cambiaremos la acción del botón Aceptar, en vez de eliminar, cambiamos el estatus 1 a 0.

Abrimos el archivo Archivo PHP usuarioElimina.php, comentamos el query de la línea 6 del código y procedemos a modicar el estatus:

usuarioElimina.php

<?php include('../conexion/conex.php'); if(!empty($_POST)){ // EVALUAMOS QUE EL VALOR NO SEA EL SUPER-ADMINISTRADOR if($_POST['idusuario'] == 1){ header('Location: usuarioLista.php'); // PARA QUE NO SIGA EJECUTANDO CODIGO exit; } $idusuario = $_POST['idusuario']; // ELIMINAR REGISTRO //$query_delete = mysqli_query($conexion, "DELETE FROM usuario WHERE idusuario = '$idusuario'"); // CAMBIAR ESTATUS $query_delete = mysqli_query($conexion,"UPDATE usuario SET estatus = 0 WHERE idusuario = '$idusuario'"); if($query_delete){ header('Location: usuarioLista.php'); } else { echo "Error al eliminar"; } } if(empty($_REQUEST['id'])){ header('Location: usuarioLista.php'); } else { $idusuario = $_REQUEST['id']; $query = mysqli_query($conexion,"SELECT u.nombre, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE u.idusuario = '$idusuario'"); $resul = mysqli_num_rows($query); if($resul > 0){ while($data = mysqli_fetch_array($query)){ $nombre = $data['nombre']; $usuario = $data['usuario']; $rol = $data['rol']; } } else { header('Location: usuarioLista.php'); } } ?> <!DOCTYPE html> <html lang="es"> <head>/span> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Eliminar usuario</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <div class="data_delete"> <h2>¿Está seguro de eliminar el siguiente registro?</h2> <p>Nombre: <span><?php echo $nombre; ?></span></p> <p>Usuario: <span><?php echo $usuario; ?></span></p> <p>Tipo de usuario: <span><?php echo $rol; ?></span></p> <form method="post" action=""> <input type="hidden" name="idusuario" value="<?php echo $idusuario; ?>"> <a href="usuarioLista.php" class="btn_cancel">Cancelar</a> <input type="submit" value="Aceptar" class="btn_ok"> </form> </div> </section> <?php include('incluir/footer.php') ?> </body> </html>

Para ocultar los registros con estatus 0 de la lista de usuarios.
Abrimos el archivo usuariolista.php y procedemos a modificar el query de la línea 27.

usuarioLista.php

<?php // CONECTAMOS A BASE DE DATOS include('../conexion/conex.php'); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Lista de usuarios</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <h1>Lista de usuarios</h1> <a href="usuarioReg.php" class="btn_new">Crear usuario</a> <table> <tr> <th>ID</th> <th>Nombre</th> <th>Correo</th> <th>Usuario</th> <th>Rol</th> <th>Acciones</th> </tr> <?php //$query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol"); $query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE estatus = 1"); $result = mysqli_num_rows($query); if($result > 0){ while ($data = mysqli_fetch_array($query)) { ?> <tr> <td><?php echo $data['idusuario'] ?></td> <td><?php echo $data['nombre'] ?></td> <td><?php echo $data['correo'] ?></td> <td><?php echo $data['usuario'] ?></td> <td><?php echo $data['rol'] ?></td> <td> <a href="usuarioEditar.php?id=<?php echo $data['idusuario'] ?>" class="link_edit">Editar</a> | <a href="usuarioElimina.php?id=<?php echo $data['idusuario'] ?>" class="link_delete">Eliminar</a> </td> </tr> <?php } } ?> </table> </section> <?php include('incluir/footer.php') ?> </body> </html>

Super-Administrador

En todo sistema existe un usuario Super-Administrador, el cual es el primer usuario registrado.
Como usuario principal no puede ser eliminado.

Quitamos la opción eliminar en la lista usuarios.
Abrimos el archivo usuarioLista.php y nos situamos por debajo de la línea 39.

usuarioLista.php

<?php // CONECTAMOS A BASE DE DATOS include('../conexion/conex.php'); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Lista de usuarios</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <h1>Lista de usuarios</h1> <a href="usuarioReg.php" class="btn_new">Crear usuario</a> <table> <tr> <th>ID</th> <th>Nombre</th> <th>Correo</th> <th>Usuario</th> <th>Rol</th> <th>Acciones</th> </tr> <?php //$query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol"); $query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE estatus = 1"); $result = mysqli_num_rows($query); if($result > 0){ while ($data = mysqli_fetch_array($query)) { ?> <tr> <td><?php echo $data['idusuario'] ?></td> <td><?php echo $data['nombre'] ?></td> <td><?php echo $data['correo'] ?></td> <td><?php echo $data['usuario'] ?></td> <td><?php echo $data['rol'] ?></td> <td> <a href="usuarioEditar.php?id=<?php echo $data['idusuario'] ?>" class="link_edit">Editar</a> <?php // SI EL USUARIO NO ES 1 MUESTRO BOTON ELIMINAR if($data['idusuario'] != 1){ ?> | <a href="usuarioElimina.php?id=<?php echo $data['idusuario'] ?>" class="link_delete">Eliminar</a> <?php } ?> </td> </tr> <?php } } ?> </table> </section> <?php include('incluir/footer.php') ?> </body> </html>
phpMyAdmin

Para evitar que sea eliminado desde la barra de navegación editamos la línea 21 del archivo usuarioElimina.php

usuarioElimina.php

<?php include('../conexion/conex.php'); if(!empty($_POST)){ // EVALUAMOS QUE EL VALOR NO SEA EL SUPER-ADMINISTRADOR if($_POST['idusuario'] == 1){ header('Location: usuarioLista.php'); // PARA QUE NO SIGA EJECUTANDO CODIGO exit; } $idusuario = $_POST['idusuario']; // ELIMINAR REGISTRO //$query_delete = mysqli_query($conexion, "DELETE FROM usuario WHERE idusuario = '$idusuario'"); // CAMBIAR ESTATUS $query_delete = mysqli_query($conexion,"UPDATE usuario SET estatus = 0 WHERE idusuario = '$idusuario'"); if($query_delete){ header('Location: usuarioLista.php'); } else { echo "Error al eliminar"; } } // SI 'ID' NO EXISTE O ES IGUAL A 1 if(empty($_REQUEST['id']) || $_REQUEST['id'] ==1 ){ header('Location: usuarioLista.php'); } else { $idusuario = $_REQUEST['id']; $query = mysqli_query($conexion,"SELECT u.nombre, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE u.idusuario = '$idusuario'"); $resul = mysqli_num_rows($query); if($resul > 0){ while($data = mysqli_fetch_array($query)){ $nombre = $data['nombre']; $usuario = $data['usuario']; $rol = $data['rol']; } } else { header('Location: usuarioLista.php'); } } ?> <!DOCTYPE html> <html lang="es"> <head>/span> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Eliminar usuario</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <div class="data_delete"> <h2>¿Está seguro de eliminar el siguiente registro?</h2> <p>Nombre: <span><?php echo $nombre; ?></span></p> <p>Usuario: <span><?php echo $usuario; ?></span></p> <p>Tipo de usuario: <span><?php echo $rol; ?></span></p> <form method="post" action=""> <input type="hidden" name="idusuario" value="<?php echo $idusuario; ?>"> <a href="usuarioLista.php" class="btn_cancel">Cancelar</a> <input type="submit" value="Aceptar" class="btn_ok"> </form> </div> </section> <?php include('incluir/footer.php') ?> </body> </html>

Paginador

Abrimos nuestro archivo Archivo PHP usuarioLista.php

Lista de usuarios

usuarioLista.php

<?php // CONECTAMOS A BASE DE DATOS include('../conexion/conex.php'); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Lista de usuarios</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <h1>Lista de usuarios</h1> <a href="usuarioReg.php" class="btn_new">Crear usuario</a> <table> <tr> <th>ID</th> <th>Nombre</th> <th>Correo</th> <th>Usuario</th> <th>Rol</th> <th>Acciones</th> </tr> <?php // PAGINADOR // TOTAL REGISTROS $query_reg = mysqli_query($conexion,"SELECT COUNT(*) as total_registro FROM usuario WHERE estatus = 1"); $resul_reg = mysqli_fetch_array($query_reg); $total_reg = $resul_reg['total_registro']; // REGISTROS A MOSTRAR POR PAGINA $por_pag = 5; // SI NO EXISTE PAGINA if(empty($_GET['pag'])){ $pag = 1; }else{ $pag = $_GET['pag']; } $desde = ($pag - 1) * $por_pag; $total_pag = ceil($total_reg / $por_pag); $query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE estatus = 1 ORDER BY nombre ASC LIMIT $desde,$por_pag"); $result = mysqli_num_rows($query); if($result > 0){ while ($data = mysqli_fetch_array($query)) { ?> <tr> <td><?php echo $data['idusuario'] ?></td> <td><?php echo $data['nombre'] ?></td> <td><?php echo $data['correo'] ?></td> <td><?php echo $data['usuario'] ?></td> <td><?php echo $data['rol'] ?></td> <td> <a href="usuarioEditar.php?id=<?php echo $data['idusuario'] ?>" class="link_edit">Editar</a> <?php // SI EL USUARIO NO ES 1 MUESTRO BOTON ELIMINAR if($data['idusuario'] != 1){ ?> | <a href="usuarioElimina.php?id=<?php echo $data['idusuario'] ?>" class="link_delete">Eliminar</a> <?php } ?> </td> </tr> <?php } } ?> </table> <div class="paginador"> <ul> <?php if($pag != 1){ ?> <li><a href="?pag=<?php echo 1; ?>">|<</a></li> <li><a href="?pag=<?php echo $pag - 1; ?>"><<</a></li> <?php } for($i=1; $i <= $total_pag; $i++){ if($i == $pag){ echo '<li class="pageSelect">'.$i.'</li>'; }else{ echo '<li><a href="?pag='.$i.'">'.$i.'</a></li>'; } } if($pag != $total_pag){ ?> <li><a href="?pag=<?php echo $pag + 1; ?>">>></a></li> <li><a href="?pag=<?php echo $total_pag; ?>">>|</a></li> <?php } ?> </ul> </div> </section> <?php include('incluir/footer.php') ?> </body> </html>
/********** PAGINADOR **********/
.paginador ul{padding: 15px;list-style: none;background: #FFF;margin-top: 15px;display: -webkit-flex;display: -moz-flex;display: -ms-flex;display: -o-flex;display: flex;justify-content: flex-end; }
.paginador a, .pageSelect{ color: #428bca;border: 1px solid #ddd;padding: 5px;display: inline-block;font-size: 14px;text-align: center;width: 35px; }
.paginador a:hover{ background: ddd; }
.pageSelect{ color: #FFF;background: #428dca;border: 1px solid #428dca; }

Buscador

Abrimos nuestro archivo Archivo PHP usuarioLista.php, en el que colocamos el formulario de busqueda.

Lista de usuarios

usuarioLista.php

<?php // CONECTAMOS A BASE DE DATOS include('../conexion/conex.php'); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Lista de usuarios</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <h1>Lista de usuarios</h1> <a href="usuarioReg.php" class="btn_new">Crear usuario</a> <form action="usuarioBuscar.php" method="get" class="form_buscar"> <input type="text" name="busqueda" id="busqueda" placeholder="Buscar"> <input type="submit" value="buscar" class="btn_buscar"> </form> <table> <tr> <th>ID</th> <th>Nombre</th> <th>Correo</th> <th>Usuario</th> <th>Rol</th> <th>Acciones</th> </tr> <?php // PAGINADOR // TOTAL REGISTROS $query_reg = mysqli_query($conexion,"SELECT COUNT(*) as total_registro FROM usuario WHERE estatus = 1"); $resul_reg = mysqli_fetch_array($query_reg); $total_reg = $resul_reg['total_registro']; // REGISTROS A MOSTRAR POR PAGINA $por_pag = 5; // SI NO EXISTE PAGINA if(empty($_GET['pag'])){ $pag = 1; }else{ $pag = $_GET['pag']; } $desde = ($pag - 1) * $por_pag; $total_pag = ceil($total_reg / $por_pag); $query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE estatus = 1 ORDER BY nombre ASC LIMIT $desde,$por_pag"); $result = mysqli_num_rows($query); if($result > 0){ while ($data = mysqli_fetch_array($query)) { ?> <tr> <td><?php echo $data['idusuario'] ?></td> <td><?php echo $data['nombre'] ?></td> <td><?php echo $data['correo'] ?></td> <td><?php echo $data['usuario'] ?></td> <td><?php echo $data['rol'] ?></td> <td> <a href="usuarioEditar.php?id=<?php echo $data['idusuario'] ?>" class="link_edit">Editar</a> <?php // SI EL USUARIO NO ES 1 MUESTRO BOTON ELIMINAR if($data['idusuario'] != 1){ ?> | <a href="usuarioElimina.php?id=<?php echo $data['idusuario'] ?>" class="link_delete">Eliminar</a> <?php } ?> </td> </tr> <?php } } ?> </table> <div class="paginador"> <ul> <?php if($pag != 1){ ?> <li><a href="?pag=<?php echo 1; ?>">|<</a></li> <li><a href="?pag=<?php echo $pag - 1; ?>"><<</a></li> <?php } for($i=1; $i <= $total_pag; $i++){ if($i == $pag){ echo '<li class="pageSelect">'.$i.'</li>'; }else{ echo '<li><a href="?pag='.$i.'">'.$i.'</a></li>'; } } if($pag != $total_pag){ ?> <li><a href="?pag=<?php echo $pag + 1; ?>">>></a></li> <li><a href="?pag=<?php echo $total_pag; ?>">>|</a></li> <?php } ?> </ul> </div> </section> <?php include('incluir/footer.php') ?> </body> </html>
/********** BUSCADOR **********/
.form_buscar{ display: -webkit-flex;display: -moz-flex;display: -ms-flex;display: -o-flex;display: flex;float: right;background: initial;padding: 10px;border-radius: 10px; }
.form_buscar .btn_buscar{ background: #1faac8;color: #FFF;padding: 0 20px;border: 0;cursor: pointer;margin-left: 10px; }

Creamos archivo Archivo PHP usuarioBuscar.php.

Buscador

usuarioBuscar.php

<?php // CONECTAMOS A BASE DE DATOS include('../conexion/conex.php'); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <?php include('incluir/script.php') ?> <title>Lista de usuarios</title> </head> <body> <?php include('incluir/header.php') ?> <section id="container"> <?php // CONVERTIR EN MINUSCULA $busqueda = strtolower($_REQUEST['busqueda']); if(empty($busqueda)){ header('Location: usuarioLista.php'); } ?> <h1>Lista de usuarios</h1> <a href="usuarioReg.php" class="btn_new">Crear usuario</a> <form action="usuarioBuscar.php" method="get" class="form_buscar"> <input type="text" name="busqueda" id="busqueda" placeholder="Buscar"> <input type="submit" value="buscar" class="btn_buscar"> </form> <table> <tr> <th>ID</th> <th>Nombre</th> <th>Correo</th> <th>Usuario</th> <th>Rol</th> <th>Acciones</th> </tr> <?php // PAGINADOR // BUSCAR $rol = ''; if($busqueda == 'administrador'){ $rol = " OR rol LIKE '%1%'"; }else if($busqueda == 'supervisor'){ $rol = " OR rol LIKE '%2%'"; }else if($busqueda == 'vendedor'){ $rol = " OR rol LIKE '%3%'"; } $query_reg = mysqli_query($conexion,"SELECT COUNT(*) as total_registro FROM usuario idusuario LIKE '%$busqueda%' OR nombre LIKE '%$busqueda%' OR correo LIKE '%$busqueda%' OR usuario LIKE '%$busqueda%') AND estatus = 1"); $resul_reg = mysqli_fetch_array($query_reg); $total_reg = $resul_reg['total_registro']; // REGISTROS A MOSTRAR POR PAGINA $por_pag = 5; // SI NO EXISTE PAGINA if(empty($_GET['pag'])){ $pag = 1; }else{ $pag = $_GET['pag']; } $desde = ($pag - 1) * $por_pag; $total_pag = ceil($total_reg / $por_pag); $query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE (u.idusuario LIKE '%$busqueda%' OR u.nombre LIKE '%$busqueda%' OR u.correo LIKE '%$busqueda%' OR u.usuario LIKE '%$busqueda%' OR r.rol LIKE '%$busqueda%') AND estatus = 1 ORDER BY nombre ASC LIMIT $desde,$por_pag"); $result = mysqli_num_rows($query); if($result > 0){ while ($data = mysqli_fetch_array($query)) { ?> <tr> <td><?php echo $data['idusuario'] ?></td> <td><?php echo $data['nombre'] ?></td> <td><?php echo $data['correo'] ?></td> <td><?php echo $data['usuario'] ?></td> <td><?php echo $data['rol'] ?></td> <td> <a href="usuarioEditar.php?id=<?php echo $data['idusuario'] ?>" class="link_edit">Editar</a> <?php // SI EL USUARIO NO ES 1 MUESTRO BOTON ELIMINAR if($data['idusuario'] != 1){ ?> | <a href="usuarioElimina.php?id=<?php echo $data['idusuario'] ?>" class="link_delete">Eliminar</a> <?php } ?> </td> </tr> <?php } } ?> </table> <div class="paginador"> <ul> <?php if($pag != 1){ ?> <li><a href="?pag=<?php echo 1; ?>">|<</a></li> <li><a href="?pag=<?php echo $pag - 1; ?>"><<</a></li> <?php } for($i=1; $i <= $total_pag; $i++){ if($i == $pag){ echo '<li class="pageSelect">'.$i.'</li>'; }else{ echo '<li><a href="?pag='.$i.'">'.$i.'</a></li>'; } } if($pag != $total_pag){ ?> <li><a href="?pag=<?php echo $pag + 1; ?>">>></a></li> <li><a href="?pag=<?php echo $total_pag; ?>">>|</a></li> <?php } ?> </ul> </div> </section> <?php include('incluir/footer.php') ?> </body> </html>
TRABAJANDO