vgestorweb Esta aplicación pretende ser un tutor y campo de pruebas para la Open App de conexión con MySQL: vmysql y las interacciones para la gestión de contenidos de una página web. Para ello utiliza varias técnicas distintas: Gestor de contenido sincronizado: para una tabla de micro-mensajes, al añadir un registro a la tabla de mensajes veremos como aparece automáticamente en la página web Gestor de contenido asíncrono de la web: la web cuenta con unos menús de áreas y unos contenidos, dichas áreas y contenidos se gestionan enteramente desde la aplicación y al sincronizarse se suben a la página web (sería un equivalente a la intranet de la misma) Obtención de datos desde la base de datos externa: en la web existe un formulario de contacto. Nuestro objetivo es bajar de la web las entradas de los usuarios. Desde la aplicación podrás editar el contenido de una página web y usar velneo v7 a modo de intranet de la misma. Además podrás bajar desde la web los contactos que dejen los usuarios (en Internet) a través de un formulario. En este caso usamos velneo para substituir a la intranet, pero abre la vía a actualizar la web con datos de cualquier aplicación (subir pedidos de clientes, stock de almacén...) vgestorweb 1/9
Qué vas a necesitar además de v7 para probar esta Open App Un servidor capaz de ejecutar PHP y MySQL Si quieres hacer pruebas locales en tu windows, puedes probar wamp: www.wampserver.com/en/ o bien usar cualquier servidor linux de esta tecnología (una de las más extendidas en la web) Una vez que tengas el servidor activo debes crear un sitio y descomprimir la carpeta WEB_conev7.zip que contiene todos los archivos necesarios. Por otro lado para crear la base de datos SQL en el zip se incluye conev7.sql que es un script que genera las tablas necesarias. Solo queda interconectar los dos mundos (la base de datos MySQL y la aplicación en PHP). Para ello hay un archivo llamado conexion.php, solo hay que substituir los datos por los que se ajusten a su instalación. <?php $host = "localhost"; $db = "conev7"; $db_usuario = "usuario"; $db_pass = "password";?> Uso La aplicación v7 sirve para rellenar los datos de la web. Para ello hemos diseñado una estructura que organiza los contenidos por áreas. Dentro de cada área podemos tener tantos contenidos como queramos. Para gestionar la información de estas tablas vamos a la zona de datos. Tenemos las acciones con las búsquedas desde las que podemos editar las áreas y contenidos de la página. Esta parte del programa es particularmente simple ya que lo interesante de esta aplicación es la manera de como interactúa con la base de datos que da soporte a la web. Como particularidad nos resta indicar que en las cajas de texto podemos introducir código HTML vgestorweb 2/9
Una vez que los contenidos están cargados se suben a la web mediante la opción Sube datos a la web Veamos como lo hace Todas las funciones interesantes están en la carpeta de Sincronización vgestorweb 3/9
Las dos primeras Subir y Bajar son las que manejan el sistema Asíncrono y la última el dock que contiene el reloj que gestiona el sistema síncrono. Sistema Asíncrono Dentro del sistema asíncrono tenemos dos procesos, una parar bajar y otro para subir. Subida de datos El proceso más importante es de subida de datos. Uno de los problemas que tenemos en este tipo de aplicaciones es gestionar las bajas ya que si borramos registros en la tabla local deberíamos borrarlos también en la tabla remota. Para evitar este problema la solución que hemos adoptado consiste en tener un campo booleano que indica si el registro está activo. Lo que hacemos antes de una actualización es desactivar TODOS los campos y luego al subir activamos los que le van entrando. Luego va lanzando sentencias SQL para insertar la nueva información vgestorweb 4/9
Bajada de datos Al igual que el proceso de subida se apoya en el campo booleno activo para determinar la información que se debe mostrar, en el proceso de bajada nos apoyaremos en el campo sincronizado para bajar solamente los registros nuevos desde la última sincronización. Por lo demás la rutina lanza la consulta y mediante la instrucción Get dato de columna por nombre va obteniendo el contenido de los campos, asignándolos a variables que luego se graban en los campos de la tabla en vgestorweb 5/9
Sistema síncrono Lo que buscamos es que las tablas estén permanente sincronizadas, esto es que a cada cambio que hagamos en v7 se refleje lo antes posible en la web sin necesidad de interacciones adicionales. En nuestro ejemplo el sistema síncrono se muestra en la columna de mensajes. Si damos de alta un contenido, veremos que automáticamente se actualiza en la web. Esto lo hace gracias a las funciones que se lanzan en los eventos posteriores a la modificación o alta de un registro. Desde dichas funciones y tras los procesos de alta, baja o modificación insertamos en una cola las sentencias SQL necesarias para sincronizar (INSERT - UPDATE o DELETE). Para procesar la cola usamos un timer en primer plano que se ejecuta desde un dock en el marco principal de la aplicación. vgestorweb 6/9
Este es el código del evento: Este es el proceso: Esta es la sentencia SQL que lo mantiene todo conectado: La cola se lanza desde un proceso timer que está en un dock del inicio Este dock tiene dos funciones, por un lado sabremos si la conexión está activa y por otro gestionamos el proceso de sincronización que gestiona la cola (con el tick de la derecha). Si el ticker está activo el sistema lanza un proceso con un timer que procesa la cola. vgestorweb 7/9
Este es el proceso del timer: otras utilidades En el menú de la Conexión SQL tenemos acceso a todas las consultas ejecutadas y su resultado así como las consultas nulas (ha habido un error normalmente de sintaxis SQL) y no se ha ejecutado nada. Como os imagináis, la tabla SQL puede crecer mucho, en las utilidades SQL de la toolbar tenemos la posibilidad de borrar esta tabla. vgestorweb 8/9
(c) Copyright: Fernando Maltrana, 2012- ticmedia.es fer@ticmedia.es "Como autor de la aplicación que cedo a Velneo, S.A., para su inclusión en el catálogo Velneo Open Apps, declaro expresamente que dispongo de la titularidad de los derechos de explotación de las aplicaciones / soluciones cedidas, exonerando expresamente a VELNEO de cualquier responsabilidad derivada de reclamaciones sobre la titularidad de los derechos de explotación de las aplicaciones / soluciones presentadas" vgestorweb 9/9