Ejemplo 2 de Ajax con Prototype: estableciendo la persistencia

Introducción.

Después de crear la estructura general de la aplicación web en JavaScript, el siguiente paso es determinar e implementar como se va a realizar la persistencia de los datos de los contactos del lado del servidor.

Para la aplicación de demostración sólo se necesitará almacenar la información de una única entidad llamada Contacto que incluirá los siguientes campos.

  1. Identificador – código del Contacto, servirá como llave primaria.
  2. Nombres.
  3. Apellidos.
  4. Correo electrónico.
  5. Fecha de nacimiento.

Como motor de base de datos se va a utilizar SQLite el cual para este caso práctico nos trae varias ventajas entre las cuales podemos contar a muy buena integración con PHP, soporte la lenguaje SQL y por ende al modelo relacional y la facilidad de instalación y administración, que incluye evitarnos la necesidad de instalar otro software cliente/servidor como sería el caso con MySQL que es un motor de base de datos de un perfil mucho mayor.

Creación de la base de datos.

Para crear la base de datos se realizan los pasos descritos a continuación.

Se crea el directorio /data bajo la carpeta del proyecto web.

Se descarga la aplicación sqlite.exe (para este ejemplo se utilizó la versión 3.6.6.2) y se copia este archivo en el directorio recién creado.

Se establece al comando la sentencia DDL para la creación de la tabla tal y como se describe a continuación.

CREATE TABLE contacto
(
    id          INTEGER      PRIMARY KEY,
    nombres     VARCHAR(30)  NOT NULL,
    apellidos   VARCHAR(30)  NOT NULL,
    correo      VARCHAR(128) NOT NULL,
    fnacimiento DATE         NOT NULL
)

El comando anterior es grabado en el archivo /data/script.sql para su posterior ejecución.

En una ventana de Símbolo del Sistema de Windows (o Shell de *nix) accedemos al directorio de datos donde se encuentra ahora sqlite.exe y el script.sql y ejecutamos los siguientes comandos del sistema operativo.

cd <ruta>data
sqlite contactos.sqlite < script.sql

La ejecución de la línea anterior se encarga de crear el archivo de la base de datos (contactos.sqlite) y de interpretar el contenido del archivo script.sql con la definición de la base de datos.

El procedimiento descrito anteriormente puede realizarse también utilizando herramientas mas elaboradas que facilitan el desarrollo y administración de bases de datos SQLite, entre las cuales destaco SQLite Manager que es un plugin muy util para Firefox.

Implementación del acceso a la base de datos.

Para realizar el acceso a la base de datos SQLite desde PHP se van a utilizar las clases PDO (PHP Data Objects) y se va a implementar la clase BaseDeDatos para simplificar su acceso desde la aplicación.

Para hacer esto creamos el archivo <ruta>basededatos.php en el directorio raíz del proyecto en el cual se define la clase BaseDeDatos de la siguiente manera.

<?php

class BaseDeDatos
{
    private $enlace;

    public function __construct ($dsn)
    {
        $this -> conectar ($dsn);
    }

    // Resto de la implementación.
}

?>

El atributo de clase $enlace almacenará la referencia a la conexion a la base de datos, mientras que el constructor se encargará de recibir la cadena de conexión (DSN) y él mismo se encarga de gestionar la conexión.

Para hacer esto se apoya en el método estático crearDSN diseñado para facilitar su preparación.

    public static function crearDSN ($informacion)
    {
        return 'sqlite:' . $informacion['ruta'];
    }

Este método espera recibir la $informacion de conexión de la siguiente manera la cual por conveniencia de centralizarla se ubicó en el archivo config.php.

array('ruta' => 'data/contactos.sqlite')

La clase BaseDeDatos incluye también métodos para conectarse (a partir de la información proporcionada por en el DSN) y desconectarse de la fuente de datos.

    public function conectar ($dsn)
    {
        $this -> enlace = new PDO ($dsn);

        return $this -> enlace;
    }

    public function desconectar ()
    {
        $this -> enlace = null;
    }

E incluye además métodos para realizar consultas sobre los datos almacenados.

    public function ejecutar ($consulta)
    {
        return $this -> enlace -> exec ($consulta);
    }

    public function consultar ($consulta)
    {
        return $this -> enlace -> query ($consulta);
    }

La diferencia entre consultar y ejecutar radica en que el primero de ellos se utiliza para obtener información (SELECT) de la base de datos y por ende retorna un conjunto de resultados, mientras que el segundo de ellos se utiliza para modificar información (INSERT, UPDATE, DELETE) y retorna el número de filas afectadas por el comando ejecutado.

Conclusiones.

En este capítulo se estableció todo lo referente a la persistencia de la información de los contactos del proyyecto, incluyendo a una capa adicional de software (la clase BaseDeDatos) que facilitará el manejo del acceso a los datos y proveerá simplicidad si se desea posteriormente modificar el motor de base de datos.

El siguiente paso consistirá en la implementación de la entidad Contacto como tal que utilizará como sustrato lo implementado hasta ahora.

Enlaces.

3 thoughts on “Ejemplo 2 de Ajax con Prototype: estableciendo la persistencia”

    1. Saludos Louis. El ejemplo se encuentra basado en PDO, gracias a ello estimo que el único cambio que se debería requerir para migrar la aplicación a MSSQL sería modificar la cadena de conexión (ver función crearDNS) al apropiado para esta base de datos (Ver http://www.php.net/manual/en/ref.pdo-dblib.php). Por supuesto que tu PHP deberá tener activado el soporte para esta base de datos y es posible que la sintáxis del SQL utilizado pueda requerir alguna mínima adaptación para hacerlo compatible.

Leave a Reply

Your email address will not be published. Required fields are marked *