Aller au contenu

Pagination en PHP


Sujets conseillés

Posté

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 :

http://www.monsite.fr?page=2

(les messages n'apparaisse pas) au lieu de

http://www.monsite.fr?page=2&categorie=$categorie

Merci pour votre aide.

<?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;
}
?>

Posté

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.

Posté

Il faudrait dans ce cas passer $categorie comme argument à ta fonction pagination... ou le définir comme variable globale dans celle-ci.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...