Version complète: sur le forum Webmaster Hub : Pagination en PHP
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
TYBMHI
Bonjour,

J'ai trouvé sur un site un système de pagination en PHP très bien fait. Le problème c'est que je n'arrive pas à faire passer une variable. En fait j'ai besoin de transmettre la variable suivante dans l'adresse: categorie=$categorie.
Je ne sais pas du tout où la placer dans le code pour que quand je clique sur un numéro de page, la variable apparaisse dans l'adresse. Pour l'instant l'adresse qui s'affiche est :
CODE
http://www.monsite.fr?page=2
(les messages n'apparaisse pas) au lieu de
CODE
http://www.monsite.fr?page=2&categorie=$categorie
Merci pour votre aide.

CODE-BOX
<?php
function pagination($current_page, $nb_pages, $link='?page=%d', $around=3, $firstlast=1)
{
$pagination = '';
if ( !ereg('%d', $link) ) $link .= '%d';
if ( $nb_pages > 1 ) {

// Lien précédent
if ( $current_page > 1 )
$pagination .= '<a class="prevnext" href="'.sprintf($link, $current_page-1).'" title="Page précédente">« Précédent</a>';
else
$pagination .= '<span class="prevnext disabled">« Précédent</span>';

// Lien(s) début
for ( $i=1; $i<=$firstlast; $i++ ) {
$pagination .= ' ';
$pagination .= ($current_page==$i) ? '<span class="current">'.$i.'</span>' : '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
}

// ... après pages début ?
if ( ($current_page-$around) > $firstlast+1 )
$pagination .= ' ...';

// On boucle autour de la page courante
$start = ($current_page-$around)>$firstlast ? $current_page-$around : $firstlast+1;
$end = ($current_page+$around)<=($nb_pages-$firstlast) ? $current_page+$around : $nb_pages-$firstlast;
for ( $i=$start; $i<=$end; $i++ ) {
$pagination .= ' ';
if ( $i==$current_page )
$pagination .= '<span class="current">'.$i.'</span>';
else
$pagination .= '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
}

// ... avant page nb_pages ?
if ( ($current_page+$around) < $nb_pages-$firstlast )
$pagination .= ' ...';

// Lien(s) fin
$start = $nb_pages-$firstlast+1;
if( $start <= $firstlast ) $start = $firstlast+1;
for ( $i=$start; $i<=$nb_pages; $i++ ) {
$pagination .= ' ';
$pagination .= ($current_page==$i) ? '<span class="current">'.$i.'</span>' : '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
}

// Lien suivant
if ( $current_page < $nb_pages )
$pagination .= ' <a class="prevnext" href="'.sprintf($link, ($current_page+1)).'" title="Page suivante">Suivant »</a>';
else
$pagination .= ' <span class="prevnext disabled">Suivant »</span>';
}
return $pagination;
}
?>
Dan
Un article du Hub qui peut t'intéresser whistling.gif

http://www.webmaster-hub.com/publication/G...pagination.html
TYBMHI
Merci beaucoup pour ta réponse mais je connaissais déjà ce tuto. Je ne cherche plus comment faire une pagination en php mais juste comment faire passer cette variable qui me fait défaut.
Dan
Il faudrait dans ce cas passer $categorie comme argument à ta fonction pagination... ou le définir comme variable globale dans celle-ci.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.