J3.x

Crear un módulo simple/Utilizar la Base de datos

From Joomla! Documentation

< J3.x:Creating a simple module
This page is a translated version of the page J3.x:Creating a simple module/Using the Database and the translation is 100% complete.
Other languages:
Bahasa Indonesia • ‎English • ‎Nederlands • ‎español • ‎français • ‎português • ‎português do Brasil • ‎русский • ‎中文(台灣)‎
Joomla! 
3.x
Tutorial
Crear un módulo simple

Esta es una serie de artículos múltiples sobre cómo crear un módulo para Joomla! Versión Joomla 3.x. Puedes navegar por los artículos en esta serie usando el menú desplegable de navegación.

Comienza con la Introducción y navega por los artículos de esta serie usando el botón de navegación en la parte inferior o en el cuadro de la derecha ("Artículos de esta serie").




Muchos de los módulos en Joomla, requieren el uso de una base de datos. Se asume en este tutorial que ya entiendes los conceptos básicos del uso de la clase JDatabase. Si no por favor, lee la documentación en Acceder a la base de datos mediante JDatabase antes de continuar con este tutorial.

Crear una tabla en la instalación

Para crear el xml de la tabla en la instalación, vamos a añadir las siguientes líneas en "mod_helloworld.xml":

<install>
     <sql>
         <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file>
         <file driver="sqlazure" charset="utf8">sql/sqlazure/install.sqlazure.utf8.sql</file>
     </sql>
</install>

<uninstall>
     <sql>
         <file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file>
         <file driver="sqlazure" charset="utf8">sql/sqlazure/uninstall.sqlazure.utf8.sql</file>
     </sql>
</uninstall>

<update> 
    <schemas>
        <schemapath type="mysql">sql/mysql/updates</schemapath> 
	<schemapath type="sqlazure">sql/sqlazure/updates</schemapath> 
    </schemas> 
</update>

Hay 3 secciones en este código:

  • La etiqueta install agrega la tabla a la base de datos.
  • La etiqueta uninstall elimina la tabla de la base de datos si el módulo es desinstalado. Ten en cuenta que no en todos los módulos se desea utilizar esta función (y no es obligatorio).
  • La etiqueta update actualiza la tabla de la bases de datos si la tabla necesita ser modificada a la hora de actualizar el módulo.

A continuación, debes especificar la etiqueta folder, en la sección files, para asegurar que los archivos sql se copian desde paquete zip de instalación:

<folder>sql</folder>

Ten en cuenta que tenemos ambos esquemas para MySQL y Microsoft SQL - otra vez puedes elegir, para personalizar tu módulo, por uno o ambos de estos sistemas.

En este ejemplo vamos a mostrar sólo los archivos de ejemplo para la base de datos MySQL. La creación de Microsoft SQL Server se deja como ejercicio para el lector.

En nuestro archivo install.mysql.utf8.sql vamos a crear la tabla y colocar algunos saludos en ella.

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=INNODB 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');

En el archivo de desinstalación sólo tendremos que quitar la tabla.

DROP TABLE IF EXISTS `#__helloworld`

Finalmente, sólo tendremos que dejar un marcador de posición en el archivo de actualizaciones. Hay un archivo SQL para cada versión del componente. Cada nombre de archivo debe coincidir con la cadena de versión en el archivo manifest para esa versión. Joomla utiliza esta cadena para determinar qué archivos SQL(s) ejecutar y en qué orden se van a ejecutar.

Nota importante: Estos archivos también se utilizan para establecer el número de versión en la tabla #__schemas. Este número de versión debe estar presente en la versión actual del componente para que los nuevos archivos de SQL que se ejecuten durante la actualización. Por ejemplo, si usted tiene la versión 1.0 y la actualización es a la versión 1.1, el archivo 1.1.sql no se ejecuta si no había un archivo 1.0.sql en la versión 1.0. Por esta razón, es una buena práctica tener un archivo SQL de actualización para cada versión, incluso si no hay ningún SQL cambio en esa versión.

# Placeholder file for database changes for version 1.0.0

Realizar la consulta en el archivo helper

Ahora en la instalación de nuestro módulo debemos saber que hay una tabla helloworld en la base de datos establecida en nuestro esquema de base de datos donde se encuentran nuestros saludos. Ahora debemos recuperar esto de la base de datos para mostrar al usuario. Ahora vamos a modificar la función getHello que ubicada en la última parte del archivo helper.

Por ahora vamos a ignorar el uso de campos de formulario para elegir un saludo y recuperaremos sólo el saludo en inglés.

// Obtain a database connection
$db = JFactory::getDbo();
// Retrieve the shout
$query = $db->getQuery(true)
            ->select($db->quoteName('hello'))
            ->from($db->quoteName('#__helloworld'))
            ->where('lang = ' . $db->Quote('en-GB'));
// Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
// Return the Hello
return $result;

Conclusión

Mediante el uso de módulos con conexiones a base de datos para Joomla! es bastante simple, un proceso sencillo. Utilizando las técnicas descriptas en este tutorial, una gran cantidad de módulos pueden ser desarrollados con un poco de esfuerzo, con actualizaciones fáciles de manejar.