Acceder a base de datos con Joomla


Hay muchas maneras de acceder, vía PHP a la base de datos, pero ya que estamos usando Joomla, ¿por qué no utilizar la forma que te da Joomla para acceder a estas bases de datos?

Esto va bien por que ya desde un principio, este CMS te pide los datos de acceso a la misma, los cuales se guardan en el fichero de configuración configuration.php del directorio raíz.
Así, aprovechando que el Joomla ya tiene los datos de acceso se puede utilizar el objeto JDatabase escribiendo líneas de código similares a éstas:
$db =& JFactory::getDBO();
$query = “SELECT a,b,c FROM ” . TABLE_XXX. ‘ WHERE id= ‘ .$db->quote($id) ;
$db->setQuery( $query );
$data = $db->loadAssoc();
 
Así, la primera línea es la invocación del objeto JDatabase , la segunda línea es la escritura de la consulta que queremos realizar con las siguientes particularidades:
  • TABLE_XXX es una constante que debe estar almacenada en otro lugar, así se da coherencia. En caso de no querer utilziar constante hay que escribir el nombre de la base de datos cambiando la cabecera por los caracteres “#_” así la tabla JOS_MITABLA debería escribirse como #__MITABLA. Esto es debido a que, al instalar te pide cual sería el encabezado de la tabla, así se puede personalizar.
  • $db-&g;quote(xxx) es una función que te encapsula un valor en las comillas genéricas de la base de datos.

Tras esto, con el $db-&g;setQuery($query) se asigna la query al objeto de base de datos (se puede acceder a esta asignación atacando a la variable privada $db-&g;_sql) y con el $db-&g;loadAssoc() se ejecuta la query guardando, en caso de que ésta se ejecute correctamente, los valores obtenidos por la misma. Otra de las ventajas que tiene el objeto JDatabase es que tiene varias funciones de acceso a base de datos: Por ejemplo:

  • loadAssoc devuelve un array asociativo
  • loadAssocList devuelve una lista asociativa de las líneas de la base de datos
  • loadObject devuelve un objeto del tipo stdClass
  • loadObjectList devuelve una lista de objetos
  • loadResult devuelve un único valor
  • loadRow devuelve la primera línea del resultado
  • loadRowList devuelve las líneas indexadas por número de línea.
Además, después de realizar la ejecución de las query se puede utilizar las funciones getErrorMsg y getErrorNum para obtener el mensaje de error y el número de error.
Y con esto ya se puede acceder a la base de datos y leer los resultados.

Acerca de albertoarceti
Administrador de sistemas informáticos, y erps en la industria farmacéutica.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: