miércoles, 27 de agosto de 2014

Tutorial PHP & MySQL (recomendado beginners) Mantenimiento de tablas

Mantenimiento de tablas PHP & MySQL

Tercera Parte

En la primera entrega de este pequeño tutorial vimos como instalar nuestro servidor XAMPP, luego en la segunda entrega vimos como crear nuestra base de datos y las tablas que interactúan con nuestra sencilla aplicación,  asi que ahora en esta tercera entrega lo que haremos será ya crear nuestras páginas que nos permitirán manipular nuestra tablita usuarios. Antes que nada crearemos una pagina que contendrá la conexion a la base de datos, esta paginita será incluida en todas las demas que podramos ocupar:

Conexion.php
El anterior archivito conexion.php nos permitirá conectarnos a nuestra base de datos. La forma en que hemos hecho la conexion es orientada a objetos aunque podrían utilizar una conexion de tipo procedimental ver ejemplo. De esta forma podremos invocar en cualquier clase nuestro objetito $mysqli para informacion sobre nuestra base.

Ahora crearemos una pagina que nos servirá como Login y que así mismo nos dará la opción de crear una cuenta si no la tenemos, la primera linea de código: require_once("conexion.php") hace referencia a la conexión creada anteriomente:
Login.php
Obviamente no tenemos una cuenta creada aún (solo la mía de administrador), asi que crearemos una pagina que nos permita crear una cuenta de usuarios:
Agregar.php
Cuando el usuario digite la informacion en dicho formulario y dé click en el boton el llamará a agregar2.php el cual tendrá la lógica de inserción de dicha información en la basesita mantenimiento_tablas aquí les muestro como queda:
Agregar2.php
Si ponemos atencion a las 3 líneas de código que están debajo del include en este archivo veremos que cada una recibe una variable $_POST, porqué usamos $_POST?, sencillo mis pequeños saltamontes: si ponen atención al formulario que se encuentran en el archivo agregar.php le dijimos que el método que usaríamos era el POST por esa razón en este archivo espera todos las variables de tipo POST con dichos nombres. En el caso de la primera: $_POST['nombre']; espera la variable que se ponga en el primer textbox al cual le pusimos de nombre NOMBRE y así sucesivamente en cada uno de ellos...
Al final si dicha información se almacenó en nuestra base de datos entonces nos redireccionará a Login.php para poder ingresar con el nuevo usuario. El objeto $mysqli es una instancia de la clase $mysqli declarada en conexion.php

Ahora debemos poner la lógica en el formulario Login.php, si el usuario y password existen entonces debe preguntar si el tipo de usuario es administrador (1) o solo un usuario (2) si es usuario deberá dejarlo entrar en la pagina Lista.php, sino deberá entrar en Admin.php. Si no existe mostrará un mensaje diciendo que se ha equivocado.
Login2.php
En esta página podrán ver la propiedad NUM_ROWS del método MYSQLI_RESULT, el cual nos permite obtener el numero de filas de un resultado, en este caso el resultado almacenado en la variable $existe.

Antes de crear la lógica del administrador donde se visualizarán todos los registros de los usuarios en nuestra base, crearemos un archivo que contendrá unas funciones que mandaremos a llamar mas adelante:
funciones.js
Ahora lo que haremos será crear la página Admin.php que será donde se mostrará la lista de usuarios que están registrados en nuestra basesita de datos. Como la cosa se pone algo buena a esta altura explicaré la porción del código parte por parte :
admin.php
(El botón al principio lo haremos en la cuarta entrega). Quiero que se fijen en el HEAD que mandamos a llamar a la función creada anteriormente, esta función será invocada en el botón activar y desactivar con el evento ONCLICK, y el cual retorna el valor que se seleccione (ver archivo: funciones.js), esto solamente para estandarizar un sistema de modo que si alguien hace alguna acción es porque está completamente consciente de lo que hace.

Obviaré las explicaciones sobre la creación de la tablita, solamente les diré que el código que ocupemos no será PHP puro, es decir que no crearemos nuestras paginas con PHP sino mas bien que incrustaremos el código PHP en el HTML, porqué? simplemente porque este es mi blog jaja ¬ ¬ ' la verdad es porque asi quiero, asi que ni modo, asi aprenderas por el momento. Crearemos nuestro query justo después del encabezado de la tablita (ponganlo en una sola línea como se muestra en la imagen, pueden copiar y pegar):

$lista_usuarios = mysqli_query($mysqli, "SELECT A.nombre_usuario, A.usuario, A.password, date_format(A.fecha_creacion, '%M %d, %h:%m %p'), A.creado_por, A.activo, B.tipo_usuario, A.id_usuario from usuarios A join tipo_usuario B on A.id_tipo_usuario = B.id_tipo_usuario");

Obtendremos los siguientes campos de las 2 tablas de nuestra base: nombre_usuario, usuario, password, fecha_creacion, creado_por, activo, id_usuario; Los cuales son campos de la tabla USUARIOS. El campo tipo_usuario de la tabla TIPO_USUARIOS, para tomar dichos campos ocuparemos el JOIN para unir ambas tablas.

Con respecto a date_format el cual aparece en el campo fecha_creacion, esto tiene un uso específico en el tratamiento de fechas desde la base de datos ayudandonos a mostrar si quisieramos minutos, segundos, meses, año, etc según el formato que querramos, por esa razon aparecen entre comillas y precedidos por signo de porcentaje las letras M, d, h, m, p. Sería ideal que investiguen más sobre estos usos en esta página aquí.
El query que encontrarán justo después de este nos ayuda a obtener el nombre del usuario que agrego a ese usuario ya que solamente se guarda el id del que lo creo, asi que debemos mostrar su nombre. Si el usuario mismo crea su cuenta aparecerá su nombre, si el administrador agregó esa cuenta aparecerá el nombre del administrador.
El IF continua simplemente comprueba que hayan registros en el query formulado, si los hay entra en un lazo WHILE de modo que permita recorrer el arreglo almacenado en la variable $lista_usuarios por el índice o la posición dentro de la tabla (0,1,2,3...) (ver manual) permitiendo llenar la tabla en las respectivas celdas al momento de llamarse cada uno según la posicion que hayamos definido en el HEADER de la tabla.

Ahora pasaremos a explicar la siguiente línea de código:

<td><a href="editar_user.php?id=<?php echo $datos_usuarios[7] ?>"><input type="button" value="Editar" style="background-color:#0080FF; color:#ffffff"></a></td>

Este botón lo que hace es que cuando se pulsa toma el id del usuario que se quiere editar, eso se logra pasando variables através de url's con el href, ponemos signo ? y luego un identificador que tome la variable que querramos mandar a esa página que invocamos, en este caso ponemos el id del usuario que ponemos en el identificador id <a href="editar_user.php?id=<?php echo $datos_usuarios[7] ?>">, de esa forma al cargar la página obtendrá dicha variable con el método GET que explicaremos luego.La misma lógica aplicaría para los botones activar y desactivar.

Creando página editar_user.php:
Cuando demos click en el botón editar en cualquiera de los usuarios que se muestren en la tabla usuarios nos redireccionará a la página:editar_user.php.
editar_user.php
Recordemos que en Admin.php mandabamos una variable através de la url con identificador que llamamos id de esta forma: <a href="editar_user.php?id=<?php echo $datos_usuarios[7] ?>">, asi que cuando se carga la página editar_user.php debe obtener dicha variable eso se hace con el método $_GET el cual es muy fácil de usar sin embargo no tan seguro ya que podrían hacer inyecciones sql atraves de la url, por el momento lo haremos así aunque yo mayormente lo hago con sessiones. Ahora bien la forma de recibir una variable $_GET se hace parecido al recibir uno $_POST: $recibe = $_GET['id_variable_enviada']; ustedes encontrarán justo despues de los headers creados en la tabla que se controla si se recibe variable GET o no con isset($_GET['id']), esta línea lo que hace es que verifica si en la url se ha mandado el identificador ID y la otra línea: !empty(), pregunta si se ha mandado pero si está vacía entonces que lo regrese a la página admin.php.

Ahora para poder mostrar información sobre el usuario selecccionado se hace con el query siguiente (se los pongo porque no aparece completo en la captura):

$query_usuario = mysqli_query($mysqli, "SELECT A.id_usuario, A.nombre_usuario, A.usuario, A.password, date_format(A.fecha_creacion, '%M %d %h:%m %p'), A.creado_por, B.tipo_usuario, A.activo from usuarios A JOIN tipo_usuario B on A.id_tipo_usuario = B.id_tipo_usuario where A.id_usuario = '".$_GET['id']."'");

Al mostrarse los campos de este usuario solo hay dos campos que quiero que se puedan modificar: nombre_usuario y el password, si ustedes quieren pueden hacerlo lo unico que tienen que hacer es agregar INPUTs y para mostrar en ellos el valor ponerlos en VALUES de esa forma cuando se dé click al boton Guardar Cambios se procesarán en la página editar_user2.php.
editar_user2.php
Creo que no explicaré este archivo ya que es cortito y bastante simple, solo recuerden que cada vez que hagamos un query debemos poner dos parámetros: la instancia de conexion en nuestro caso $mysqli y el segundo que es el query (la sentencia) en sí.

Lo que haremos ahora será crear la lógica de los botones ACTIVAR y DESACTIVAR  que se encuentran en el archivo admin.php y que nos llevan a cualquiera de ellos al pasar por funciones.js, veremos el comportamiento de desactivar_user.php:

desactivar_user.php
Al igual que en la página edit_user, recibía variables através del método GET enviadas en la url así tambien se comporta la página desactivar_user.php que espera el valor del ID del usuario que se desactivará de lo contrario no podrá proceder. El comportamiento de esta página es simple: recibe el id del usuario a borrar y el administrador deberá poner sus credenciales para poder proceder con la desactivacion otro usuario no podrá, está lógica de la cual les menciono se plasma en el arvhivo: desactivar_user2.php siguiente:

desactivar_user2.php
De este solo diré que crearemos una variable que se llame $activo el cual tendrá valor false para poner el estado del usuario a 0, ya que no queremos borrar el registro (en muchas ocasiones en buena practica no borrar los registros si no mas bien desactivarlos por historial o bitácora, ademas asi no lloras por algún registro borrado equivocadamente).

Ahora pasaremos a crear el archivo activar_user.php:
activar_user.php
La única diferencia entre activar_user2 y desactivar_user2 es que el valor de la variable $activo se pone en true para poder cambiar el estado a 1:
activar_user2.php
Bueno por el momento hemos podido mostrar los usuarios asi como agregarle el boton para poder editarlos y el botón de activación o desactivación según sea el caso, en la próxima entrega (cuarta) les diré como darle la funcionalidad al botón agregar del archivo admin.php así como al archivo login.php y la restricción al perfil.php si el usuario es diferente de administrador, les dejo unas capturas de como debe verse:
http://makeagif.com/i/8GyXuc



Saludes desde El Salvador  Proyecto en rar: descargar





No hay comentarios:

Publicar un comentario

Gracias por tu opinión