lunes, 5 de junio de 2017

Procedimientos Almacenados MYSQL Workbench (Recomendado Beginners)

Hola amigos!
Por aca les dejo un util video sobre como hacer procedimientos almacenados con MySQL Workbench
espero les sirva. Si les gusto les agradezco su Like y suscripcion a mi canal:

lunes, 22 de diciembre de 2014

Menú dinámico con PHP & MySQL

Antes que nada quiero agradecerle a mi amigo Cesar Araujo que fué quien al final me dio un lumbrazo sobre la idea que tenía pero que no funcionaba hasta que le pedí su ayuda.

Sucede que muchas veces queremos asignar menus a ciertos usuarios y hay ciertos menus que no deben ser vistos por algunos usuarios por ello debemos crear un menu que sea dinámico. He aquí una idea de como pueden hacer su menu dinámico:

Primero les presento mis tablas:

Tabla menus contendra las url de los sitios que queremos accesar.



Tabla menus_usuarios es una tabla pivot que contendra info de la tabla usuarios y de la tabla menus. En ella podemos ver que el usuario 1 tiene acceso a los menus 1,2,3,4; Donde estado es lo que nos indica el acceso: 1 habilitado, 0 no acceso

Esta es mi tabla usuario donde muestro unicamente mi usuario administrador


Ahora les mostrare rapidamente solamente la parte de los menus. El siguiente formulario contiene una lista de checkboxes la cual es generada a partir de un query a la tabla menus de modo que mostrara la cantidad de checkboxes igual a la cantidad de menus en la tabla:


Este formulario se encuentra en una pagina llamada: usuarios.php la cual al apretar el boton submit invoca a la pagina usuarios2.php, la cual procesa dicha informacion de la forma siguiente:


Debo mencionar que antes de hacer este codigo he insertado previamente al usuario al cual quiero asignar dichos menus, por esa razon verán la variable $id_user[0] al momento de insertar en la tabla menus_usuarios. Verán solamente tres valores y es porque dicha tabla tiene la columna id_menus_usuarios autoincrementable.

Por acá les dejaré el codigo TALVEZ les sirve ya que es de mi proyecto, pero algo es algo! jaja

Saludes desde El Salvador.

Codigo: https://www.dropbox.com/sh/qlzha579lc6ukf5/AABxyCTN0x1_TYtUqk59L_RTa?dl=0

jueves, 11 de diciembre de 2014

Integrar CKEditor con CKFinder WYSIWYG Editor

Haremos un ejercicio completo que comprenderá desde la instalacion de CKEditor en tu sitio hasta la integracion de CKFinder con CKEditor.

Lo primero que haremos será descargar nuestro editor CKEditor y nuestro administrador de archivos web CKFinder de su sitio oficial, cualquiera de las opciones Basic Package, Standar Package, Full Package nos servirá para trabajar. La diferencia de cada uno radica en los elementos (botones) que se presentarán en nuestro editor:
Descargar CKEditor from sitio oficial





Luego de descargarlo vamos a integrarlo en nuestra pagina web de la siguiente manera. En la seccion Head de nuestra página vamos a agregar el siguiente código:
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="ckfinder/ckfinder.js"></script>
 Donde SRC muestra la ruta donde se encuentra la carpeta CKEditor & CKFinder que descargaste anteriormente:

Referenciar librerias CKEditor en nuestra pagina web
Para que tengan una idea de como tengo mis archivos les muestra esta imagen:
Ubicacion de archivos en Xampp

Vamos a ver una muestra de como se ve cuando lo vemos en nuestro localhost:


Ahora vamos a probar la subida de archivos dando click en el icono imagen junto al icono flash:



Al dar en el boton "Send it to the Server", probablemente experimentes el siguiente error:


La solucion para este problema checkAuthentication function la cual se encuentra en el archivo config.php de la carpeta CKFinder, cambiar a TRUE a la variable return, asi:


Guardamos los cambios en dicho archivo y ahora si vamos a subir una imagen en nuestro editor:


Sencillo y corto pero espero les sirva, por acá les dejo un poco de la documentacion utilizada para dichos editores y administradores de archivos.

http://docs.cksource.com/CKFinder_2.x/Developers_Guide/PHP/CKEditor_Integration 

http://docs.ckeditor.com/#!/guide/dev_file_browse_upload

http://docs.ckeditor.com/#!/guide/dev_file_browser_api


Saludos desde El Salvador!















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





lunes, 25 de agosto de 2014

Tutorial PHP & MySQL (recomendado beginners) Mantenimiento de tablas

Mantenimiento de tablas PHP & MySQL

Segunda Parte

En la primera entrega de este pequeño tutorial vimos como instalar nuestro servidor XAMPP, asi que ahora lo que haremos será crear el enunciado de lo que queremos crear:
"Cree un mantenimiento de usuarios, el cual pueda saber la fecha en que el usuario ha sido creado, así mismo que pueda ser categorizado con tipo de usuario: Administrador o simple usuario. El administrador podrá activar o desactivar al usuario o borrarlo si es necesario (solo administradores podrán borrarlo) y actualizarlo (solo el usuario podrá modificar su perfil o el administrador)". 
Vamos a crear nuestras tablas en la herramienta phpmyadmin que nos permite administrar nuestra base de datos, asi que accederemos a PhpMyadmin através del navegador de la siguiente forma: Localhost:8080\phpmyadmin allí crearemos la base de datos mantenimiento_tablas y luego crearemos la primera tabla usuarios:


Podríamos crear las tablas una por una de esta forma según esta ultima imagen sin embargo, también podríamos utilizar el diseñador de tablas que se encuentra justo al entrar en la base de datos recién creada y luego buscar en la opcion más, se desplegará un menú, al final encontrarás la opción diseñador.
Creando tabla usuarios
De esa forma quedará la tabla usuario según se visualiza en la imagen arriba, el tipo de valor TIMESTAMP en la columna fecha_creacion se llenará automaticamente al insertar el registro de ese usuario insertando la fecha y hora exacta del servidor en ese momento. El campo id_usuario igualmente se incrementará automaticamente ya que el valor de la columna A_I(auto incremente) está seleccionado y olvide mencionarles que es primary key (id_usuario). Al final las tablas quedarían así:

La tabla Tipo_usuario contendrá los 2 tipos de usuarios disponibles: administrador y usuario, asi que obviamete hay que hacer una relación entre las 2 tablas para que puedan interactuar entre sí. Cómo se logra esto? sencillo, vamos a crear un indice en la tabla que esta referenciando (Usuarios), justamente en la columna id_tipo_usuario de la forma siguiente:


Luego de haber creado el índice en dicha columna, debemos ir a la opción que dice "Vista de relaciones" y luego hacer lo siguiente:
Llenaremos desde aquí la tabla: Tipo_usuarios:
Al agregar estos dos tipos de usuarios en la tabla Tipo_usuarios procederemos a crear un usuario en la tabla usuario que es el que nosotros ocuparemos como Administrador:

Al final el nuevo registro de nuestro usuario quedará tal y como se ve en la imagen que se muestra arriba.

Hasta acá llega esta segunda parte pero en la tercera parte si programaremos ya en PHP, solo que necesitabamos tener listo nuestro ambiente de trabajo para que todo funcione perfecto. Quieres ver la primera parte? click aquí

Saludos desde El Salvador

Tutorial PHP & MySQL (recomendado beginners) Mantenimiento de tablas

Mantenimiento de tablas PHP & MySQL 

Primera Parte


Antes de comenzar con este sencillo, pero para algunos salvador tutorial, debo decirles que no ocuparemos ningún framework en especial sino que toda la programación será practicamente secuencial pero si quisieras aprender un framework en específico aquí te dejo un tuto muy bueno del YII el cual es un framework basdo en MVC click aquí sin embargo en nuestro tutorial ya para empezar necesitaremos descargar las herramientas necesarias para poder comenzar, acá les pongo una gran lista de lo que necesitaremos:

  • XAMPP*: Y si! esto es lo unico que instalaremos en nuestros equipos para poder trabajar. La sencilla razón de solo descargar esto es porque XAMPP es un servidor que contiene en un solo lugar el sistema gestor de base de datos: MySQL, el servidor web APACHE y el intérprete para el lenguage PHP. 
  • Bueno, parece que olvide también mencionarles que necesitaremos un editor para poder escribir nuestro codigo PHP, para esto ocuparemos un editor bien uva: SUBLIME (aunque ustedes podrían ocupar notepad++, o el de su preferencia.)
 

*(XAMPP lo podemos descargar desde acá!)
  1. Instalando XAMPP: (Si ya lo tienes obvia este paso y sigue a la parte 2 aquí)
Luego de haber descargado el XAMPP, lo ejecutaremos y seguiremos el asistencia de instalación (llamado también "Modo Señorita" por el Ing. E********** M***a**do)



 

Antes de terminar la instalación nos pedirá si queremos inicializar el control panel de XAMPP, dicho checkbox por defecto esta "checkeado" o como dicen los amigos mexicanos "palomeados".

Configurando puertos de escucha del Apache
A continuacion levantamos los servicios a necesitar en este caso Apache y MySQL. En mi caso al tratar de inicializar el servicio de Apache podría salirnos el mensaje que vemos en esta ultima imagen: la razón de este problema es que el puerto que trae configurado por defecto el apache (en este caso el 80), otra aplicación más la esta utilizando, asi que la solución para esto es que vayamos a la opcion siguiente, boton Config de Apache y elegir la primera opción httpd.conf, así:



La línea de código que esta subrayada nos muestra que el archivo httpd.conf tiene configurado escuchar al puerto 80, por lo tanto debemos cambiar a otro puerto que pueda estar libre; En mi caso yo pondré el puerto 8080 y damos en guardar.

Ahora cuando damos al boton Start de Apache nos cargará los servicios sin ningún problema y cambiará el estatus a running:

Ahora comprobaremos que realmente levante nuestro servicio, asi que iremos a nuestro navegador y pondremos en la barra de direcciones lo siguiente: localhost:8080, y debería salirnos lo siguiente:

Pues bien, hemos comprobado que todo corre perfectamente, ahora veremos una pagina sencilla siendo levantada por Apache. En el directorio siguiente C:\xampp\htdocs\  en esta carpeta deberás poner todos tus proyectos que quieras visualizar en tu navegador. Ahora quiero que digites en tu navegador la siguiente direccion: localhost:8080\index.html y debería mostrarte la pagina siguiente:

Y de esta forma ya queda instalado correctamente tu XAMPP para que levantes tus proyectitos!! Saludes desde El Salvador... Ver segunda parte IR

Puedes visitar mi canal en YouTube para ver otros videos, algunos son de programación con C# y otros de Android y otros que quizas no quieran ver... jajaja  01010011  01000001 01001100  01010101  2!!! 

sábado, 5 de abril de 2014

Integrar redes sociales a sitio web parte 2

En la ultima entrada vimos como integrar Facebook en nuestro sitio web (Ver aqui). Pues ahora integraremos otra red social muy usada la cual es Twitter. A comparacion de la integracion de Facebook, Twitter es mucho mas fácil, asi que... comenzemos!