Bonjour,
Je cherche à faire une portion de code qui traite la pagination avec les numéros de pages (ainsi qu'un bouton précédent et suivant).
J'ai bien-sur lu le tuto de antoine herault mais il ne fonctionne pas avec ma connexion pdo.. enfin il est surement adaptable mais j'ai essayé en local et rien à faire.
voici ma connexion avec pdo :
et voici le code complet du tuto :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $pdo = new PDO('mysql:dbname=xxx;host=xxx', 'xxx', 'xxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
Comment adapter le code pour qu'il fonctionne avec ma connexion ?
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 $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 '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><strong>Ecrit par : '.stripslashes($donnees_messages['pseudo']).'</strong></td> </tr> <tr> <td>'.nl2br(stripslashes($donnees_messages['message'])).'</td> </tr> </table><br /><br />'; //J'ai rajouté des sauts à la ligne pour espacer les messages. } echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle { //On va faire notre condition if($i==$pageActuelle) //Si il s'agit de la page actuelle... { echo ' [ '.$i.' ] '; } else //Sinon... { echo ' <a href="livredor.php?page='.$i.'">'.$i.'</a> '; } } echo '</p>';
et autre question en option^^ : comment faire une function avec ce code ? car je le trouve assez long pour le mettre dans chaque pages.
merci pour votre aide.
Partager