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.
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:
- id (int, auto incremental y clave primaria)
- titulo (varchar 100)
- descripcion (varchar 200)
- cuerpo (text)
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.
<?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);
}
}
?>
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:- Decirle que voy a trabajar con el modelo de artículos
- Enviarle a la vista de la portada ("home") los datos de los últimos artículos publicados
- Además, de paso voy a cargar un helper de URL, que tiene una función que me servirá de utilidad dentro de la vista para construir las URL para ver los artículos.
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);
}
}
?>
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.
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...