Catégorie : CodeIgniter

Système de pagination sous CodeIgniter

Temps de lecture : 2 minutes

Avec Codigniter vous pouvez mettre en place simplement un système de pagination pour afficher vos informations par paquets. Tout cela sans se prendre la tête et se noyer dans des dizaines de lignes de code.

Nous allons créer la base de donnée de l’article : Installation et Configuration de CodeIgniter .

Dans un premier temps il créer le model. Pour cela nous allons utiliser la classe active record de CodeIgniter.

class model extends CI_Model {

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }
    
     public function getAll($debut=0) {
        return $this->db->select('*')->from('message')->order_by("id", "desc")->limit(30, $debut)->get()->result();
    }

	public function count($where = array()) {
        return (int) $this->db->where($where)->count_all_results('message');
    }


}

Puis nous allons créer notre contrôleur.

defined('BASEPATH') OR exit('No direct script access allowed');

class controleur extends MY_Controller {

function liste($nb=0) {
        $messages = array();
	$this->load->model('model');
        $this->load->library('pagination');
        $config['base_url'] = base_url() . "/index.php/controleur/liste/";
        $config['total_rows'] = $this->model->count();
        $config['per_page'] = '30';
        $config['uri_segment'] = 3;
        $config['num_links'] = 5;
        $config['full_tag_open'] = '<div class="pagination">';
        $config['full_tag_close'] = "</div>";
        $config['cur_tag_open'] = '<span class="current">';
        $config['cur_tag_close'] = '</span>';
        $config['next_tag_open'] = $config['prev_tag_open'] = '<span class="disabled">';
        $config['next_tag_close'] = $config['prev_tag_close'] = "</span>";
        $this->pagination->initialize($config);
        $data['pages'] = $this->pagination->create_links();
        $data['messages'] = $this->model->getAll($nb);
	$this->load->view("liste_message",$data);
    }

}

Dans le fichier de vue :

// A vous de mettre en page vos messages
var_dump($messages);

// pour afficher vos lien de paginations 
echo $pages;

Vous aurez un beau système de pagination. Si jamais vous devez toujours passer des paramètres en plus à votre contrôleur vous devez changer quelques lignes :

function liste($param1,$param2,$nb=0) {
...
$config['base_url'] = base_url() . "/index.php/controlleur/liste/$param1/$param2/"; // ajout des params
...
$config['uri_segment'] = 5; // 3+ le nombre de param
...
}

Installation et Configuration de CodeIgniter

Temps de lecture : 2 minutes

Pré requis

  • Un serveur Apache ( lamp, wamp, easy php, mamp, … )
  • Un SGBD mysql

La Base de données

Dans un premier temps voici un exemple de petite base de données. Par exemple la base de données suivante

CREATE DATABASE `tuto` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `tuto`;

CREATE TABLE IF NOT EXISTS `message` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `sujet` varchar(255) NOT NULL,
  `message` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Maintenant que la base est prête nous alors configurer CodeIgniter pour qu’il puisse s’y connecter.

Rendez-vous dans le fichier : application/config/database.php

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'VOTRE LOGIN MYSQL';
$db['default']['password'] = 'VOTRE MOT DE PASSE MYSQL';
$db['default']['database'] = 'tuto';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE; // à passer à FALSE une fois le dev fini
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Maintenant le framework peut en théorie se connecter à votre base.

Les configurations systèmes

Pour un fonctionnement optimal de CodeIgniter il y a plusieurs configurations à faire.
Pour les config suivantes rendez-vous dans le fichier /application/config/config.php. Et là beaucoup de choses à changer.

//ligne 17
$config['base_url']	= 'http://localhost/outweb/';
//ligne 60
$config['url_suffix'] = '.html';
//ligne 72
$config['language']	= 'french'; // si vous changez cette valeur il faudra aller chercher les traduction, si vous avez la flemmes ne faites rien ici
//ligne 227
$config['encryption_key'] = 'UN TRUC BIEN COMPLIQUE AVEC DES 1233 ET des !#?$_-éà@';
//ligne 282
$config['global_xss_filtering'] = TRUE;

D’autres paramètres de sécurité sont disponibles mais je les expliquerai dans un autre post.

Les autoloads

Codeigniter permet l’utilisation de librairies, helpers, et de fichiers de config perso.
On peut charger dans le code directement chacun des fichiers de configuration de  l’application mais certains d’entre eux sont indispensables sur chacunes de nos pages. Autant dire à CodeIgniter de les charger automatiquement.
Voici selon moi le minimum indipensable.

$autoload['libraries'] = array("session");
$autoload['helper'] = array("url","database");

Téléchargement

Dans un premier temps il va falloir télécharger le fameux framework. Le mieux étant de prendre la dernière mouture.
Téléchargement du framework.
Dezipper l’archive et copier le dossier qui est dedans à la racine de votre répertoire www.
Pour plus de simplicité nous allons le renommer outweb.
Supprimer le dossier user_guide qui contient une copie de la documentation en ligne de CodeIgniter.

Configuration

Il y a trois grandes parties à configurer dans CodeIgniter :

Une fois les quelques configs précédentes effectuées votre CodeIgniter est prêt.
Si vous vous rendez à l’adresse http://localhost/outweb/ vous aurez le message de bienvenue de CodeIgniter

Nous allons donc pouvoir commencer notre application.

Comme vous le savez surement CodeIgniter est basé sur un model MVC. Par conséquent il est préfèrable de garder cette approche tout au long du développement.

Fièrement propulsé par WordPress & Thème par Anders Norén