Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
8Activity
0 of .
Results for:
No results containing your search query
P. 1
06 Comment Faire Un Affichage Page Par Page en Php

06 Comment Faire Un Affichage Page Par Page en Php

Ratings: (0)|Views: 310 |Likes:
Published by SANGARE SOULEYMANE

More info:

Published by: SANGARE SOULEYMANE on Jun 04, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/22/2011

pdf

text

original

 
Lorsque l'on utilise une base de données, il arrive souvent que l'on fasse des requêtes sur cette base de données etque l'on obtienne des dizaines voir des centaines de résultats.Jusqu'ici, vous faisiez une boucle
while
pour parcourir l'ensemble de vos résultats et vous les affichiez sur une mêmepage.C'était fort inesthétique.En effet, une page de 3 km de long ne fait plaisir à personne et est toujours très longue à charger.Ce tutorial va donc vous apprendre à créer une
barre de navigation
identique à celle présente sur ce site pour le forumet la home (en bas des news).Avant de rentrer dans la rédaction de cette barre de navigation, nous allons faire un petit point sur la syntaxe
SQL
.En effet, vous avez déjà que le
SQL
permet d'ordonner les résultats grâce à l'
ORDER BY
(cf. coursAfficher lesdonnées provenant de votre base).En revanche, ce que vous ne savez peut être pas, c'est que le
SQL
permet, lors d'une sélection sur une table, de limiterle nombre de résultats obtenus grâce à la commande
LIMIT
.Afin de concrétiser tout cela et donc de voir comment fonctionne cette commande
LIMIT
, nous allons créer une tablecatalogue permettant de lister tous les livres d'une bibliothèque par exemple.On pourrait avoir alors la structure suivante :
 table catalogue
CREATE TABLE catalogue (id int(11) NOT NULL auto_increment,titre text NOT NULL,description text NOT NULL,PRIMARY KEY (id)) TYPE=MyISAM;
Remplissons alors cette table avec différents livres :
 contenu de catalogue
INSERT INTO catalogue VALUES (1, 'Le php facile', 'La future référence :)');INSERT INTO catalogue VALUES (2, 'Professional PHP4 XML', 'Tout pour apprendre l'XML');INSERT INTO catalogue VALUES (3, 'PHP et MySQL pour les nuls', 'Pour les débutants');INSERT INTO catalogue VALUES (4, 'PHP précis et concis', 'Un livre sympa :)');INSERT INTO catalogue VALUES (5, 'Dreamweaver MX', 'Pour les allergiques du notepad');INSERT INTO catalogue VALUES (6, 'Advanced PHP for Web Professionals', 'Un bon livrepour ceux qui ne rigolent pas');INSERT INTO catalogue VALUES (7, 'Je débute en PHP 4', 'Pour nous :)');INSERT INTO catalogue VALUES (8, 'PHP Bible', 'Pour les fanas de religion');INSERT INTO catalogue VALUES (9, 'Advanced PHP for Flash', 'Pour les graphistes');INSERT INTO catalogue VALUES (10, 'Essential PHP fast', 'Un livre pour les pressés');
Déjà çà de fait.Nous allons donc maintenant pouvoir nous pencher sur la compréhension de la commande
LIMIT
.Aujourd'hui, vous devriez savoir faire une requête simple permettant d'afficher tous les livres de cette bibliothèque surune même page WEB, et ce, en classant les livres par ordre alphabétique, ce qui donnerait le code suivant :
index.php
<html><head><title>Les livres de la bibliothèque</title></head>
© 2002 - 2007 lephpfacile.com - Page 1/7 
 
</body>Les différents livres de la bibliothèque :<br /><br /><?php// on se connecte à notre base$base=mysql_connect('serveur', 'login', 'password'); mysql_select_db('nom_base',$base); // Préparation de la requête$sql= 'SELECT titre, description FROM catalogue ORDER BY titre ASC'; // on lance la requête (mysql_query) et on impose un message d'erreur si la requête nese passe pas bien (or die)$req=mysql_query($sql)ordie('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // on compte le nombre de livre contenu dans la base de données$nb_livres=mysql_num_rows($req); if ($nb_livres==0) {  echo 'Aucun livre enregisté.'; }else { echo '<table><tr><td><td>Description</td></tr>';  // on va scanner tous les tuples un par unwhile ($data=mysql_fetch_array($req)) {  // on affiches les résultats dans la <table> echo '<tr><td><td>' ,htmlentities(trim($data['description'])) , '</td></tr>';  } echo '</table>'; }// on libère l'espace mémoire alloué pour cette requêtemysql_free_result($req);  // on ferme la connexion à la base de données.mysql_close(); ?></body></html>
Et ceci affichera quelque chose ressemblant à :Titre du livreDescriptionAdvanced PHP for FlashPour les graphistesAdvanced PHP for Web ProfessionalsUn bon livre pour ceux qui ne rigolent pasDreamweaver MXPour les allergiques du notepadEssential PHP fastUn livre pour les pressésJe débute en PHP 4Pour nous :)Le php facileLa future référence :)PHP BiblePour les fanas de religionPHP et MySQL pour les nulsPour les débutantsPHP précis et concisUn livre sympa :)Professional PHP4 XMLTout pour apprendre l'XMLIntroduisons alors le
LIMIT
.En fait
LIMIT
va vous permettre de limiter le nombre de résultats à afficher d'une requête
SQL
donnée.En effet, vous allez pourvoir, par exemple, n'afficher que les 3 premiers livres de la table.Reprenons alors le code précédent, et changeons la requête
SQL
par la requête suivante :
© 2002 - 2007 lephpfacile.com - Page 2/7 
 
 select avec limit
SELECT titre, description FROM catalogue ORDER BY titre ASC LIMIT 0,3
Et ceci affichera quelque chose ressemblant à :Titre du livreDescriptionAdvanced PHP for FlashPour les graphistesAdvanced PHP for Web ProfessionalsUn bon livre pour ceux qui ne rigolent pasDreamweaver MXPour les allergiques du notepadComprenons cette requête :- on sélectionne les titre et les descriptions de livres (SELECT titre, description)- on fait cette sélection sur la table catalogue (FROM catalogue)- on ordonne les résultats dans l'ordre alphabétique des titres (BY titre ASC)- on sélectionne juste
3
livres à partir du
0 + 1 livre, soit du premier livre
(LIMIT 0,3)
Attention le 0 peut être trompeur.
En effet, il faut lire en fait 0 + 1 (soit 1) : on sélectionne "en français" à partir du premier livre, mais "en SQL", onsélectionne à partir du livre 0.Encore un exemple :Reprenons encore une fois le code précédent mais avec cette fois ci le code suivant pour la requête
SQL
:
 select avec limit
SELECT titre, description FROM catalogue ORDER BY titre ASC LIMIT 4,3
Si on y réfléchit deux minutes, théoriquement, cette requête
SQL
nous dit quoi ?Et bien, nous allons sélectionner les titres et les descriptions de certains livres qui sont stockés dans la table catalogue.Ensuite nous allons prendre ces livres dans l'ordre alphabétique de leur titre, puis nous allons n'en sélectionner quequelques uns.Lesquels ?Et bien, nous allons sélectionner
3 livres
(le 3 après la virgule), et ce, à partir du
4+1 ème livre, soit du cinquième
.On devrait donc se retrouver avec les livres suivants :
:: Titre du livre :::: Description ::
Le php facileLa future référencePHP BiblePour les fanas de religionEt en exécutant le script, nous obtenons bien ce que nous avions prévus.En résumé pour le
LIMIT x,y
:On sélectionne
y
éléments et ce, à partir du
(x+1) ème
élément.Bien sur, tout dépend de l'ordre dans lequel on fait notre requête :
ORDER BY ... ASC
ou
ORDER BY ... DESC
(ordrecroisant ou décroissant).En effet, si on a un
ORDER BY ... DESC
(ordre décroissant), on prendra en fait les
y
éléments qui arrivent juste avant le
(x+1) ème
élément.Naturellement, à ce point du cours, vous devriez normalement voir plus ou moins vers quoi on avance.En effet, notre affichage page par page va en fait refaire plusieurs fois la même requête
SQL
avec un
LIMIT x,y
saufqu'à chaque fois, et donc à chaque page, le paramètre
x
va changer.
© 2002 - 2007 lephpfacile.com - Page 3/7 

Activity (8)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
ukyis liked this
ukyis liked this
rachid4488 liked this
rachid4488 liked this
ahhacker liked this
brunov99 liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->