J'ai adapté le code suivant (que j'ai eu à l'url suivante : http://php.developpez.com/sources/?p...ysqlpagination) à mon problème et qui sert d'illustration :
Une fois cette étape terminée, on peut enfin utiliser le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 CREATE TABLE `xmen` ( `id` int(11) NOT NULL auto_increment, `personnage` varchar(255) NOT NULL default '', `acteur` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ; INSERT INTO `xmen` VALUES (1, 'Wolverine', 'Hugh Jackman'); INSERT INTO `xmen` VALUES (2, 'Magneto', 'Ian McKellen'); INSERT INTO `xmen` VALUES (3, 'Professeur X', 'Patrick Stewart'); INSERT INTO `xmen` VALUES (4, 'Docteur Jean Grey', 'Famke Janssen'); INSERT INTO `xmen` VALUES (5, 'Tornade', 'Halle Berry'); INSERT INTO `xmen` VALUES (6, 'Cyclope', 'James Marsden'); INSERT INTO `xmen` VALUES (7, 'Malicia', 'Anna Paquin'); INSERT INTO `xmen` VALUES (8, 'Dents-de-Sabre', 'Tyler Mane'); INSERT INTO `xmen` VALUES (9, 'Crapaud', 'Ray Park'); INSERT INTO `xmen` VALUES (10, 'Mystique', 'Rebecca Romijn'); INSERT INTO `xmen` VALUES (11, 'Pyro', 'Alex Burton');
J'ai donc bien le nombre d'enregistrement par pages et la page courante qui viennent s'afficher après mon .php? dans ma barre d'adresse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 <?php // Numéro de la page à afficher $page = 0; if(isset($_GET['page']) && is_int($_GET['page'])) { $page = $_GET['page']; } // Nombre de résultats par page $nb = 5; if(isset($_GET['nb']) && is_int($_GET['nb'])) { $nb = $_GET['nb']; } // Connexion au serveur de base de données $conn = mysql_connect('localhost', 'root', 'bprevot'); if(!$conn) { die('Impossible de se connecter au serveur.'); } // Connexion à la base de données $db = mysql_select_db('test', $conn); if(!$db) { die('Impossible de se connecter à la base de données.'); } // Nombre total d'enregistrements $sql = ' SELECT COUNT(*) FROM xmen; '; $query = mysql_query($sql, $conn) or die('Erreur MySQL : '.mysql_error()); $row = mysql_fetch_row($query); $total = $row[0]; // Nombre maximum de pages $max_pg = ceil($total / $nb); // Selection des enregistrements pour la page considérée $sql = ' SELECT id, personnage, acteur FROM xmen LIMIT '.($page * $nb).','.$nb.' '; $query = mysql_query($sql, $conn) or die('Erreur MySQL : '.mysql_error()); ?> <p>Page actuelle : <?= $page ?></p> <p>Nb d'enregistrements par page : <?= $nb ?></p> <table> <tr> <th>ID</th> <th>Personnage</th> <th>Acteur</th> </tr> <?php while($list = mysql_fetch_assoc($query)) { echo '<tr>'; echo '<td>'.$list['id'].'</td>'; echo '<td>'.$list['personnage'].'</td>'; echo '<td>'.$list['acteur'].'</td>'; echo '</tr>'; } ?> </table> <p>Pages : <?php for($i = 0 ; $i < $max_pg ; $i++) { echo ' <a href="?page='.$i.'&nb='.$nb.'">'.$i.'</a>'; } ?> </p> <p>Nb d'enregistrements par page : <a href="?page=<?= $page ?>&nb=5">5</a> <a href="?page=<?= $page ?>&nb=10">10</a> <a href="?page=<?= $page ?>&nb=20">20</a></p>
Etant donné qu'il y à un GET sur ces deux valeurs en tout début de script, je suis censé les récupérer quand je boucle sur ma page mais en l'occurence, malgré que les paramètres soient bien passés par la barre d'adresse je ne récupère pas le nouveau numéro de page et le nouveau nombre d'enregistrement par pages.
Partager