> Manuales > Manual de CodeIgniter

Segunda parte práctica, de aplicación web de prueba en CodeIgniter. Ahora realizamos los pasos necesarios para crear y conectar con nuestra base de datos.

En el artículo anterior del Manual de CodeIgniter comenzamos un repaso de todo lo que hemos aprendido hasta el momento. Así pues, si no lo hemos hecho, conviene leer las explicaciones de la primera parte de esta aplicación de prueba en CodeIgniter. Anteriormente vimos cómo crear nuestro primero controlador y nuestra primera vista. Ahora comenzaremos a trabajar con los módulos y las bases de datos.

4.- Creo una tabla "articulos" en la base de datos

Como en mi aplicación voy a tener artículos, voy a crear una tabla donde almacenarlos. Utilizaré una base de datos MySQL que tengo en local. Crearla con el método que prefiráis, pero yo utilizo PhpMyAdmin que tengo instalado por defecto con mi paquete Wamp.

Tendré que crear una base de datos que voy a llamar, por ejemplo, "aplicacionarticulos" y luego una tabla llamada "articulo", que tendrá los siguientes campos:

Por si sirve de algo, coloco aquí el código SQL del create table.

CREATE TABLE `articulo` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titulo` VARCHAR( 100 ) NOT NULL ,
`descripcion` VARCHAR( 200 ) NOT NULL ,
`cuerpo` TEXT NOT NULL
)

Antes de salir de PhpMyAdmin, o cualquier otro gestor de base de datos, vamos a insertar manualmente unos cuantos registros en la tabla de "articulo" con datos de prueba.

5.- Configuro CodeIgniter para la conexión con esta base de datos

Ahora voy a decirle a CodeIgniter que realice una conexión automática con la base de datos que acabo de crear, que se active en todas las páginas de dentro de mi sitio web. Para ello comienzo editando el archivo de configuración database.php (system/application/config/database.php) donde deben figurarlos datos de la base de datos que deseo utilizar.

Tenemos que editar al menos los siguientes datos:

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "aplicacionarticulos";

Ahora debo decirle a CodeIgniter que conecte automáticamente, incluyendo siempre las librerías de conexión con base de datos. Para esto tenemos que editar el archivo de configuración autoload.php (system/application/config/autoload.php), en el lugar donde se indica qué librerías queremos cargar siempre.

$autoload['libraries'] = array('database');

6.- Creo un primer modelo de artículos

Ahora voy a crear una primera aproximación al modelo de artículos. Por el momento sólo voy a colocar una función para traer los últimos 5 artículos.

Nota: El código que veremos a continuación es PHP 5. PHP 4 tendría alguna diferencia por los nombres de los constructores, como ya se explicó.

<?php
class Articulo_model extends Model {

   function __construct(){
      parent::Model();
   }
   
   function dame_ultimos_articulos(){
      $ssql = "select * from articulo order by id desc limit 5";
      return mysql_query($ssql);
   }
}
?>

Nota: En este modelo estamos utilizando las propias funciones de acceso a base de datos de MySQL. Simplemente comentar que en CodeIgniter existe un mecanismo de abstracción de base de datos que se podría utilizar para escribir código con funciones que sirvan para cualquier tipo de base de datos que podamos utilizar, y no sólo MySQL.

Este modelo lo guardamos en el archivo "articulo_model.php" dentro de la carpeta de los modelos (system/application/models).

7.- Actualizo el controlador

Ahora vamos a cambiar un poco el código de nuestro controlador inicial, para colocar algunas otras cosas que nos servirán para dos cosas: <?php
class Articulos extends Controller {
   function index(){
      //cargo el helper de url, con funciones para trabajo con URL del sitio
      $this->load->helper('url');
      
      //cargo el modelo de artículos
      $this->load->model('Articulo_model');
      
      //pido los ultimos artículos al modelo
      $ultimosArticulos = $this->Articulo_model->dame_ultimos_articulos();
      
      //creo el array con datos de configuración para la vista
      $datos_vista = array('rs_articulos' => $ultimosArticulos);
      
      //cargo la vista pasando los datos de configuacion
      $this->load->view('home', $datos_vista);
   }
}
?>

Nota: El código está comentado y si se encuentran dudas recomendamos releer este Manual de CodeIgniter. No obstante, en el código anterior hay una cosa que son los "helpers" que no hemos explicado todavía. Son simplemente librerías de código con funciones que resultarán útiles a la hora de hacer aplicaciones web con CodeIgniter, que están clasificadas por temática. Nosotros estamos cargando el helper "url", que contiene unas serie de funciones para trabajar con URLs. En concreto utilizaremos la función site_url() del helper "url", un poco más adelante.

8.- Actualizo la vista "home"

Ahora vamos a cambiar el código de nuestra vista de portada, puesto que queremos que nos muestre también los últimos artículos publicados en el sitio, cada uno con un enlace a la URL donde se muestre cada artículo.

<html>
<head>
<title>Portada de mi sitio</title>
</head>
<body>
<h1>Bienvenido a mi web</h1>
<p>Estos son los últimos artículos publicados.</p>
<?php
while ($fila = mysql_fetch_array($rs_articulos)){
   echo '<p>';
   echo '<a href="' . site_url('/articulos/muestra/' . $fila['id']) . '">' . $fila['titulo'] . '</a>';
   echo '</p>';
}
?>

</body>
</html>

Podemos ver cómo hacemos un recorrido a los registros de últimos artículos traídos desde la base de datos con ayuda del modelo y enviados a la vista por medio del controlador. Además, vemos que se está utilizando la función site_url() que pertenece al helper "url" que habíamos cargado en el controlador.

Nota: Aquí también estamos utilizando directamente funciones de MySQL. Sin embargo, CodeIgniter tiene algunas librerías que nos ayudarían a hacer esto de otra manera. No obstante, por ahora queremos limitarlos a lo que conocemos del framework.

Una vez actualizada la vista, podemos acceder a la página raíz de nuestra aplicación, que debería mostrar los últimos artículos que habían cargados en la base de datos, en la tabla articulo, con un enlace a varias páginas, donde se muestra cada uno de los artículos (no creadas todavía). Por supuesto, tenéis que haber insertado algún artículo en la tabla para que lo muestre.

Tenemos la primera parte de nuestra aplicación con acceso a base de datos, creada en pocos minutos con CodeIgniter. Pero todavía tenemos que complicarlo un poco más. En el próximo artículo haremos un poco más grande esta aplicación web.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual