CodeIgniter es un framework PHP gran alcance que puede ayudar a acelerar en gran medida el desarrollo de aplicaciones web. Tiene un tamaño reducido y muy buen rendimiento debido al enfoque modular para cargar sus bibliotecas y hace un gran trabajo separar la lógica de la presentación mediante el uso de un Modelo-Vista-Controlador (MVC) dinámico.
En este caso veremos como trabajar para el el codigo sea mas claro y ordenado, con un ejemplo sencillo:
Suponiendo la siguinte tabla empleados de una base de datos
CREATE TABLE IF NOT EXISTS `empleados` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(50) NOT NULL, `sueldo` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
El modelo
Cuando creamos el modelo de datos que seran las funcione que consultan datos en la base de datos
<?php class Empleados_model extends CI_Model{ function __construct(){ $this->load->database(); } function obtener_empleados(){ $query = $this->db->get('empleados'); return $query->result_array(); } } ?>
En la función __construct cargamos la base de datos, así podemos acceder a ella usando $this->db para consulta datos, como hacemos en la función obtener_empleados. Para poder recuperar todos las entradas de la tabla empleados, ejecutamos la función get(), que recibe como parámetro la tabla de la que queremos obtener los registros, así que esta llamada se traduce en la consulta sql SELECT * FROM ‘empleados’. La función get() está disponible gracias a la clase Active Record de CodeIgniter.
Con esto tenemos nuestro modelo enlazado con la base de datos, lo siguiente será crear el controlador para que maneje estos datos, para ello creamos fichero empleados.php en controllers y definiremos la función listar_empleados.
function listar_empleados(){ $this->load->model('empleados_model'); //obtengo el listado y lo guardo en una matriz $listadoEmpleados = $this->empleados_model->obtener_empleados(); //asigno la matris a una matriz data que se enviara a la vista $data[‘empleado’] = $listadoEmpleados; $this->load->view(listaempleados', $data); }
Cargamos el modelo que hemos creado en la primera línea, usando la función load->model y especificando el nombre del modelo que necesitamos, a continuación llamamos a la función que habíamos creado y obtenemos una matriz con la información de la base de datos. Copiando la matriz obtenida, que será el que enviemos a la Vista en la mariz $data. A la vista solo enviamos una matriz con diferentes datos que luego mostraremos, por ejemplo:
$data[‘empleado’] = $listadoEmpleados; $data[‘ttitulo_pagina’] = ‘Empleados’;
Finalmente, preparamos la vista para que muestre la información de manera ordenada:
<html> <body> <h1> <? Echo $ titulo_pagina ?> </h1> <table> <tr> <th>Nombre</th> <th>Sueldo Anual</th> </tr> <?php foreach($empleados as $empleado): ?> <tr> <td> <?php echo $empleado['nombre']; ?></td> <td> <?php echo $empleado['sueldo']; ?> </td> </tr> <?php endforeach; ?> </table> </body> </html>
La forma de llamar a la pagina para verla será:
www.dominio.com/controlador/funcion
En este caso deberemos llamarlo de la siguiente manera:
www.midominio.com/empleados/listar_empleados
Por defecto Codeigniter utiliza la URL:
www.midominio.com/index.php/controlador/funcion
Para quitar el index.php de la url aplicamos el siguiente codigo en el archivo .htaccess
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L] </IfModule>