[RESOLU] Pagination

Eléphant du PHP | 134 Messages

30 mars 2015, 20:48

Bonsoir , j'ai une pagination simple sur affichage de ma base des données , mais le problème c'est que cela affiche 154 pages je voudrais qu'il affiche que 10 pages à la fois et suivant pour afficher les autres page .

Mais je ne vois pas comment faire simple , merci pour votre aide.
<?php   $limit = 50;  
   if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; };  
   $start_from = ($page-1) * $limit; 
?>


Puis affichage des pages :

Requetes :
$materiels = mysql_query("SELECT * FROM materiels ORDER BY date_maj DESC LIMIT ".$start_from.", ".$limit."");?>
$sql = "SELECT COUNT(id) FROM materiels";  
    $rs_result = mysql_query($sql);  
    $row = mysql_fetch_row($rs_result);  
    $total_records = $row[0];  
    $total_pages = ceil($total_records / $limit);  
    $pagLink = "<div class='pagination'>";  
    for ($i=1; $i<=$total_pages; $i++) {  
    $pagLink .= "<li><a href='Accueil2015.php?action=1&page=".$i."'>".$i."</a></li>";
    };  
    echo $pagLink . "</div>";
Merci d'avance pour aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 avr. 2015, 16:31

Hello !

En fait, il suffit que dans ta boucle for(), la valeur de fin soit 10 au lieu de $total_pages. Ceci étant, ta pagination ne proposerait alors que les 10 premières pages, quelque soit la page que tu consultes. Il serait donc plus sympa de ne pas boucler de 1 à 10, mais de $i = $start_from, tant que $i <= $start_from+10

Si tu commences à la page 0, tu auras les 10 premières pages. Si tu ouvres la 10e page, tu auras alors les pages 10 à 20.

Il faudra alors ajuster pour pouvoir revenir de la page 10 vers les pages précédentes et ne pas proposer les pages 150 à 160 si tu n'as que 154 pages :)
Par exemple :
- partir de $i = max(1, $start_from - 5) // afficher les 5 pages précédentes si elles existent)
- tant que $i <= min ($total_pages, $start_from + 10) // afficher les 10 pages suivantes si elles existent
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 134 Messages

01 avr. 2015, 18:03

Bonjour
Merci beaucoup pour ton aide , je vais voir pour faire ça .
:)
Bonne continuation

Eléphant du PHP | 134 Messages

20 mai 2015, 11:32

Bonjour

De retour après un déplacement pour le travail

Je viens d'essayer plusieurs fois j'ai bien de 0 à 10 mais quand je clic sur 10 je passe de 450 à 460
J'ai toujours rien compris :oops:
<?php  
   $sql = "SELECT COUNT(id) FROM Matériels";  
   $rs_result = mysql_query($sql);  
   $row = mysql_fetch_row($rs_result);  
   $total_records = $row[0];  
    $total_pages = 10;  
   $pagLink = "<div class='pagination pagination-sm pull-right push-down-20 push-up-20'>";  
    for ($i=$start_from;  
   $i <= $start_from+10;$i++) { 
   $pagLink .= "<li><a href='Accueil2015.php?action=1&page=".$i."'>".$i."</a></li>";
   }
   echo $pagLink . "</div>";  
   }
   ?>
Merci

Avatar du membre
Mammouth du PHP | 1609 Messages

21 mai 2015, 17:21

Salut Michel6359, oui à priori tu devrais utiliser $page et non $start_from.
Développeur web depuis + de 20 ans

Eléphant du PHP | 134 Messages

21 mai 2015, 20:09

Merci :D ça fonctionne deux jour que je galère :( , le seule soucis c'est que maintenant il affiche la pagination de 1 à 10 mais après 1 à 20 et 1 à 30 ect... mais ce que je voudrais c'est que la pagination après soit 10 à 20 , 20 à 30 ..ect... et suivant / précédent . Sinon arriver à 20 ma pagination prend 2, 3 ligne et pas terrible .

Merci encore =D>