Pagination résultats MySQL avec PHP dispose d'un certain nombre d'avantages . Tout d'abord, il accélère la requête MySQL, car elle ne renvoie qu'un petit nombre de résultats . Deuxièmement, elle améliore l'expérience de l' utilisateur , car il montre un nombre gérable de résultats par page. Troisièmement, il économise la bande passante en n'envoyant pas les résultats inutiles. Pour ces raisons , de nombreux sites , y compris Google , Yahoo et WordPress , ont adopté son utilisation. Pour utiliser MySQL pagination , vous devez utiliser la commande SQL " LIMIT " et les paramètres "GET" dans l'URL. Instructions
1
créer une table " répertoire " dans votre base de données MySQL avec les colonnes "id ", " nom " et " téléphone " . Remplir le tableau avec quelques entrées . Voici les requêtes SQL pour créer et peupler la table, respectivement :
CREATE TABLE répertoire ( `id` int ( 11) NOT NULL AUTO_INCREMENT, `nom` varchar ( 100) NOT NULL, ` téléphonique ` varchar ( 20) NOT NULL, PRIMARY KEY ( `id` ) ) ;
INSERT INTO répertoire ( ` nom `, ` téléphoniques `) VALUES (' Jack' , '201 - 379-5406 '), ( ' Jake ' , '331 - 123-5196 '), ( 'John' , '222 - 342-3250 ');
2
Créer un nouveau fichier " pagination.php " et ouvrez-le avec un texte éditeur tel que Notepad . Écrire un segment de code qui se connecte à votre serveur MySQL , en utilisant la fonction " mysql_connect " de PHP, et sélectionne la base de données contenant la table " répertoire " , en utilisant la fonction " mysql_select_db " de PHP. Voici un exemple :
mysql_connect ( 'localhost' , 'admin' , 'password' ) ;
mysql_select_db ('test' ) ;
Remplacer les quatre cordes avec votre nom d'hôte, nom d'utilisateur, mot de passe et base de données, respectivement .
3
Ecrire un segment de code qui définit le "$ RowsPerPage " variable pour le nombre de lignes à afficher par page , définit «$ currentPage " à la page demandée via " $ _GET [ 'page' ]" ou zéro si aucune et définit «$ offset" à l'offset à partir de laquelle récupérer les lignes à partir de la base , calculée en soustrayant un de "$ currentPage " et en multipliant par " $ RowsPerPage . " Voici un exemple :
$ RowsPerPage = 5;
$ currentPage = (( isset ($ _GET [ 'page' ] ) && $ _GET [ 'page' ]> 0) ? (int) $ _GET [ 'page' ]: 1);
$ offset = ($ currentPage -1) * $ RowsPerPage ;
4
écrire une ligne de code qui récupère "$ " RowsPerPage lignes à partir de l'offset défini dans « $ offset " de la table " répertoire " en exécutant une requête "SELECT" via la fonction " mysql_query " de PHP et enregistre le résultat dans une nouvelle variable. Voici le code :
$ result = mysql_query ( 'SELECT * FROM répertoire LIMIT $ offset ', ' $ RowsPerPage . . . ) ;
5
Ecrire un " tout " boucle qui récupère les lignes de l'ensemble des résultats de la requête , " $ result, " en utilisant la fonction " mysql_fetch_assoc " de PHP et les affiche sous forme de liste ou une table. Voici un exemple :
echo '
ID | Nom | Numéro de téléphone | < ;/tr> " ;
while ( $ row = mysql_fetch_assoc ($ result) ) {
echo '
». $ row [ 'id' ] . '< /td> | ». $ row [' nom '] . '< /td> | ». $ row [' téléphone '] . '< /td> |
'; }
echo '
';
6
Ecrire un segment de code qui récupère le nombre d'entrées dans la table en exécutant une requête "COUNT " via la fonction " mysql_query " de PHP , calcule le nombre de pages en divisant le nombre d'entrées par le "$ RowsPerPage " variable et arrondi vers le haut et enregistre le résultat dans un variable " $ totalPages ». Voici le code :
$ result = mysql_query ( 'SELECT COUNT (*) AS comptage à partir du répertoire ');
$ row = mysql_fetch_assoc ( $ result);
$ totalPages = ceil ( $ row [ 'count' ] /$ RowsPerPage ) ;
7
écrire deux " if" : celui qui affiche un lien " page précédente " et celle qui affiche un "Next » lien, si la page correspondante existe ( c'est à dire si " page $ currentPage " est supérieur à un pour " page précédente " et si " $ currentPage " est supérieur à " $ totalPages " pour" page suivante " ) . Voici le code :
if ($ currentPage > 1) {
echo '
|