Multiplier votre capacite de memorisation par 10
Page d acceuil Acceuil
Bienvenue sur votre bureau MetaComputer
Page d acceuil Mes licences
Acquerir un logiciel ou un service MetaComputer
Page d acceuil Gestion commerciale :
Devis, commandes, stock...
connexion à modabbir bureau
Se retrouver dans un véritable marché
Page d acceuil Hassib (comptabilite generale) :
Saisir, importer votre balance..
Sortir vos etats fiscaux,
Envoyer votre declaration via internet
Page d acceuil Adae : Gestion de paye.. :
Gestion de personnels,
elaborer bulletins de paye
effectuer la declaration de CNSS
Page d acceuil Meta Clouds = MetaUSB.. :
Votre espace de stockage offert par
MetaComputer. c'eat aussi lié à vos base de données,
si vous travaillez avec une application MetaComputer
Page d acceuil Al Morakib
pour surveiller et controler par cameras
ma maison, mon lieu de travail, mes depots...
Page d acceuil Mes PCs :pour surveiller et controler
mes ordinateurs, ceux de mes enfants
et meme les pcs du lieu de travail
Page d acceuil Service Meta GPS :
Reperer vos vehicules
Suivre et controler a distance
tous vos vehicules..
Page d acceuil Meta FAX
Envoyer des FAX sans ligne
et sans apareil
Decoller...
Page d acceuil Emailer
Envoyer à des Miliers
des e-mails de prospection
Page d acceuil Service MetaSMS :
Envoyer et gerer vos SMS
Faire des compagnes publicitaires
Avec des résultats sures et optimaux
Page d acceuil Meta-eEntreprise :
Votre entreprise sur le net..
Lancer, suivre une action commerciale
Page d acceuil Meta-eFormation :
Des supports de formation tres adaptés
à votre développement personnel,
A une activité professionnelle de pointe...
Page d acceuil jeux :
jeux pour les enfants
aussi pour les grands
Super-Logiciels pour vous
ALYASSIR
Gestion simple et performante :
- Facturation
- BLs
- Devis
- Commandes
- Reglements
- Clients et fournisseurs
Al Morakib
Logiciel de serveillance par camera et par internet ...
Al Hassib
Comptabilité générale, Liasse comptable marocaine ...
Morakib PC
Plus
Projets pour vous
Net sou9 / e-souk
NetFavoris 
NOUS |  contacter-nous
Avenue des F.A.R. Rsidence Niama N6 - Ttouan (Maroc)
Tl :(+212) 8 90 60 52 25
Fax :(+212) 5 39 97 25 15
Mobile :(+212) 6 61 10 74 37
Email :mce@meta-computer.com
 

Acceuil  php, js(710)  Pagination
Pagination 2011-05-19

- Notre but est de créer un système de pagination pour afficher les messages de notre livre d'or.
Jusqu'à maintenant, nous affichions tous les messages sur une seule page.
Vue la quantité actuelle, cela devient impossible.
Puisque de nouveaux messages sont régulièrement ajoutés au livre d'or, le système doit être automatisé.
Notre système devra en plus nous permettre de changer facilement le nombre de messages affichés par page.

3 - La table utilisée pour le script
- Pour notre script, nous allons utiliser la table d'un livre d'or tout simple :
id, pseudo, message
L'id est un champ qui ne comporte qu'un numéro. Ce numéro augmente de 1 à chaque nouveau message (auto
incrémentation).
L'id va nous permettre de trier les messages : celui qui a le plus grand ID est celui qui a été posté le plus récemment.
Je vous conseille de copier le code SQL ci-dessous puis de l'installer chez vous afin de pouvoir tester le code.
J'ai même inséré quelques messages histoire d'avoir un peu de matière pour utiliser le script.

// Table livredor //
CREATE TABLE `livredor` (
`id` bigint(20) NOT NULL auto_increment,
`pseudo` text,
`message` text,
KEY `id` (`id`)
) TYPE=MyISAM;
INSERT INTO `livredor` VALUES ('1','Tonio','Salut !
C'est vraiment un super site ! ! !');
INSERT INTO `livredor` VALUES ('2','Jacot','Bravo !
Je te félicite pour ton site...');
INSERT INTO `livredor` VALUES ('3','Paul','Merci pour ce site très instructif !
Bonne continuation. :o)');
INSERT INTO `livredor` VALUES ('4','AZERTY','Cool.
Super design !');
INSERT INTO `livredor` VALUES ('5','MagaMan','Bravo !
Super le livre d'or...');
INSERT INTO `livredor` VALUES ('6','Giro','10/10 !
Encore merci !');
INSERT INTO `livredor` VALUES ('7','Sms','tro bi1 ton site!');
INSERT INTO `livredor` VALUES ('8','All','C'est rigolo comme site. ^^');
INSERT INTO `livredor` VALUES ('9','Moi','Bien joué.
C'est un site très réussit !');
INSERT INTO `livredor` VALUES ('10','Weby','J'adore !
Allez voir mon site :
www.monsite.com');
INSERT INTO `livredor` VALUES ('11','Cool','Très bon design, très bon site. ');
INSERT INTO `livredor` VALUES ('12','LEGEANTDU75','C'est un peu vide mais sympa quand même.
Bon courrage.');
INSERT INTO `livredor` VALUES ('13','Prune','Oh lalalala !
Le boooo site ! ;o)'); //

4.0 - Compter le nombre de pages
Pour commencer ce script, nous allons compter le nombre de pages.
Pour compter le nombre de pages, nous allons commencer par compter tous les messages contenus dans le livre d'or.
Ensuite, nous allons mettre le nombre total de messages dans la variable $total.
Voici le code qui nous permettra de compter le nombre de messages :

//Compter le nombre de messages
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); //Nous récupérons le contenu
de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

- Maintenant que nous avons le nombre total de messages, nous allons en déduire le nombre de pages grâce à une
division et nous le mettrons dans la variable $messagesParPage.
Pour ce faire, nous allons diviser le nombre total par le nombre de messages à afficher par page.
Attention, le résultat de la division risque d'être un nombre à virgule. Si c'est le cas, nous devrons prendre le nombre
entier (sans virgule) supérieur car imaginons que vous affichiez 5 messages par page et que vous ayez 17 messages;
17/5=3,4 et 3,4 page n'est pas un nombre correct de pages. Il va donc falloir créer la 4ème page qui contiendra 2
messages.
Pour avoir le nombre entier supérieur, nous devons utiliser la fonction ceil(). Dans notre code, nous mettrons
le nombre total de pages dans la variable $nombreDePages. Voici donc le code précédent complété de manière à
avoir le nombre de pages :

//Calculer le nombre de pages
$messagesParPage=5; //Nous allons afficher 5 messages par page.
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); //Nous récupérons le contenu
de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

4.1 - Afficher les messages correspondants à la page actuelle

Maintenant que nous avons réussi à compter le nombre de pages, nous allons essayer d'afficher les messages de
la page actuelle.
Pour cela, nous allons donc devoir sélectionner une gamme de messages dans la table livredor par ordre d'id
décroissant (nous affichons les messages du plus récent au plus ancien).
Pour trier par ordre d'id décroissant, nous devons ajouter ceci à notre requête SQL (après les WHERE) : ORDER
BY id DESC.
A savoir pour trier les résultats d'une requête SQL dans l'ordre croissant ou décroissant :
Vous devez écrire ORDER BY. Ensuite, vous ajoutez le nom du champ utilisé pour trier et
pour terminer, vous pouvez ajouter DESC si vous souhaitez l'ordre décroissant. Si vous
souhaitez l'ordre croissant, ne mettez rien...
Sachez que pour les nombres, il s'agit du classement ordinal que l'on a l'habitude d'utiliser
et que pour les lettres, il s'agit de l'ordre alphabétique (croissant) ou inverse (décroissant).
Pour avoir une gamme précise (par exemple avoir depuis le message 5 jusqu'au message 10), nous devons ajouter
ceci à notre requête SQL (après les WHERE et les ORDER BY) :
LIMIT 5, 5

- À savoir pour obtenir un gamme précise :
Vous devez utiliser LIMIT. Ensuite, vous devez ajouter le numéro de la première entrée à
afficher en sachant que le premier nombre n'est pas 1 mais 0, et pour terminer, le nombre
total que l'on veut récupérer.
Exemple : pour afficher le message 6 au message 15, il faut mettre LIMIT 5, 10. Essayez
de bien comprendre cela, c'est très important pour la suite.
Avant de faire notre requête, nous allons devoir savoir dans quelle page nous sommes.
Pour cela, nous allons dire que le numéro de la page actuelle est contenu dans la variable $_GET['page'] (donc sous
la forme livredor.php?page=[n° de la page]).
Si la variable $_GET['page'] n'existe pas, nous allons dire que nous sommes dans la page 1.
Nous allons rajouter une petite condition de telle manière que si le numéro de page contenu dans $_GET['page'] est
supérieur au nombre total de pages ($nombreDePage), alors la page sera la page maximum.
Pour savoir si une variable existe, il faut utiliser la fonction isset().
Voici donc le bout de code permettant d'afficher le numéro de la page ajouté au code précédent :

-Savoir dans quelle page nous sommes
$messagesParPage=5; //Nous allons afficher 5 messages par page.
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); //Nous récupérons le contenu
de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est
plus grande que $nombreDePages...
{
$pageActuelle=$nombreDePages;
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}

Bon, maintenant que nous avons le n° de la page que nous souhaitons afficher, il faut qu'on fasse notre requête SQL
et que l'on affiche les messages.
Notre requête va utiliser une ORDER BY pour avoir les messages dans l'ordre d'id décroissant de manière à avoir
les messages les plus récents en premier.
Notre requête va aussi utiliser LIMIT pour sélectionner une plage de messages.
La partie que nous aurons à modifier à chaque page est la plage de messages.
Nous devons donc indiquer à LIMIT la première entrée à lire et combien d'entrées nous voulons lire ensuite.
Nous avons déjà la première partie, elle est contenue dans la variable $messagesParPage.
Il ne nous reste donc plus qu'à indiquer la première entrée à lire ($premiereEntree).
Nous allons devoir le calculer avec la page actuelle ($pageActuelle) et le nombre de messages par page
($messagesParPage).
Nous allons retirer 1 à $pageActuelle puis multiplier $pageActuelle par $messagesParPage.
Faites le calcul vous-même :
Pour $pageActuelle=1 : $pageActuelle-1=0, 0*5=0 => Nous lisons les entrées à partir de l'entrée 0 soit la première
entrée.
Pour $pageActuelle=2 : $pageActuelle-1=1, 1*5=5 => Nous lisons les entrées à partir de l'entrée 5 soit la sixième
(qui est la première de la deuxième page).
Si vous avez le courage, vous devriez pouvoir faire la requête vous même.
Voici donc le code précédent avec la requête en plus.

J'ai même rajouté l'affichage des messages en bonus (ce n'est pas l'objet du cours et si vous êtes ici, c'est que vous
savez le faire...).

- Afficher les messages de la page en cours
$messagesParPage=5; //Nous allons afficher 5 messages par page.
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); //Nous récupérons le contenu
de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est
plus grande que $nombreDePages...
{
$pageActuelle=$nombreDePages;
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
// La requête sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT * FROM livredor ORDER BY id DESC LIMIT '.$premiereEntree.',
'.$messagesParPage.'');
while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce
à une boucle
{
//Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre
design...
//De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
//echo '






Ecrit par : '.$donnees_messages['pseudo'].'
'.nl2br($donnees_messages['message']).'
';
//J'ai rajouté des sauts à la ligne pour espacer les messages.
}
Commentaires des visiteurs :
simo merci je cherchais ce sujet
karim merci <3
Ajouter votre commentaire :
Nom :
E-mail :
Commentaire :


Espace Abonné

Mot passe oublié?

Créez un compte maintenant.
Publicité
 
Copyright ©2020. Metacomputer Engineering s.a.r.l . tous les droits réservés