viernes, 24 de enero de 2014

Conectar a un módulo de Joomla 2.5 con la base de datos interna

Por lo general, las cosas divertidas empiezan cuando nos conectamos a las bases de datos. En Joomla tenemos una base de datos interna dentro de la instalación del paquete, que puede ser MySQL y en la versión 3.0 pueden sel otras, incluso SQLite.

También podemos conectar con una base de datos externa, por ejemplo, una base de datos de clientes, facturación, libros, lo que sea. En este blog, que se basa en la documentación de Joomla! Developers, trataré de poner las cosas en claro (al menos para mi) de cómo conectarnos con la base de datos interna, crear una tabla, leerla, etcétera.

Para ello tenemos que utilizar la clase JDatabase, que nos simplifica mucho el uso de la base de datos. Recuerde que se está utilizando PHP orientado a objetos, de locual es deseable que tenga conocimientos.

También necesita tener conocimientos de cómo hacer un módulo en Joomla 2.5.

Crear una tabla desde el instalador del módulo

Desde e proceso de intslación de nuestro módulo, podemos crear una tabla y todo el código para manipularla. Incluso se puede hacer para diferentes tipos de bases de datos, no sólo para MySQL.

Este código se anexa desde el "manifiesto" de nuestro módulo, es decir, el archivo XML. En nuestro ejemplo anterior, de donde puede bajar los archivos, puede definir estos procesos con el siguiente código:

<install>
     <sql>
         <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file>
     </sql>
</install>
 
<uninstall>
     <sql>
         <file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file>
     </sql>
</uninstall>
 
<update> 
    <schemas>
        <schemapath type="mysql">sql/mysql/updates</schemapath>
    </schemas> 
</update>

Necesita crear, dentro de la carpeta de su módulo, las subcarpetas sql y otra para mysql, para crear los archivos para otras bases de datos. Ahi guardará los archivos  install.mysql.utf8.sql, que no es otra cosa que archivos de texto con las instrucciones correspondientes para cada base de datos, que por lo general estarán en SQL.

El archivo install.mysql.utf8.sql se muestra a continuación, y si sabe MySQL observará que es código propio de esta base de datos:

CREATE TABLE IF NOT EXISTS '#__helloworld' (
        `id` int(10) NOT NULL AUTO_INCREMENT,
        `hello` text NOT NULL,
        `lang` varchar(25) NOT NULL,
 
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
 
INSERT INTO '#__helloworld' ('hello', 'lang') VALUES ('Hello World', 'en-GB');
INSERT INTO '#__helloworld' ('hello', 'lang') VALUES ('Hola Mundo', 'es-ES');
INSERT INTO '#__helloworld' ('hello', 'lang''') VALUES ('Bonjour tout le monde', 'fr-FR');

Este listado, tomado del ejemplo del manual, crea la tabla y unos cuantos elementos. Aún no hemos utilizado estas instrucciones.

El siguiente archivo utilizamos la peligrosa sentencia drop-table en el archivo
uninstall.mysql.utf8.sql:

DROP TABLE IF EXISTS '#__helloworld'
 
El siguiente archivo no es un UPDATE de un registro, sino más bien la actualizacion de la base de datos y de momento solo tiene un comentario:

# Placeholder file for database changes for version 1.0.0



Cómo utilizar las sentencias de la base de datos


Una vez que ya tenemos nuestras definiciones y archivos para crear y desinstalar la tabla en la base de datos interna de Joomla!, procederemos a llamar a los archivos. Recuerde que la lógica del módulo la encontraremos en el archivo helper.php. 

Necesitamos conectarnos a la base de datos y crear la tabla



http://www.pacoarce.com

No hay comentarios:

Publicar un comentario