dubuducu
Messages postés391Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention19 mai 2010
-
29 sept. 2008 à 11:46
dubuducu
Messages postés391Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention19 mai 2010
-
29 sept. 2008 à 12:56
Bonjour,
je souhaiterai mettre en Variable de Session des checkbox que je coche tout au long de ma pagination. (EXEMPLE , 3 dan la page 1 , 12 dans la page 2 etc ... )
Le seul souci c'est que je ne sais pas faire ...
Voici liste.php la page qui affiche toute la liste avec toutes les checkbox et pagination.php la fonction pagination
function pagination($total,$courante)
{
/* on définit quelques variables dont on aura besoin */
$prec = $courante - 1; // numéro de la page précédente
$suiv = $courante + 1; // numéro de la page suivante
$avder = $total - 1; // avant dernière page
$adjacentes = 3; // nombre de pages à afficher de chaque côté de la page courante
/*
On commence la pagination que l'on stocke dans la variable à retourner
pagination() pourra ainsi être appelée plusieurs fois, en haut et en bas d'une page par exemple
*/
$pagination = ""; // s'il n'ya pas au moins deux pages, on n'affiche rien
if($total > 1) // il y a au moins deux pages
{
// on commence par stocker dans $pagination le <div> d'ouverture
$pagination .= "<div class=\"pagination\">\n";
// on affiche d'abord le bouton précédent
if ($courante == 2) // si on est sur la page 2, le bouton précédent renvoit sur la page initiale, il est inutile de mettre ?page=1 sinon on se retrouve avec un duplicate content
$pagination.= "<a href=\"liste.php\">« préc</a>";
elseif ($courante > 2) // si la page actuelle est supérieure à 2 le bouton précédent renvoit sur la page dont le numéro est immédiatement inférieur
$pagination.= "<a href=\"liste.php?page=$prec&total_pages=$total\">« préc</a>";
else // sinon on est sur la page 1 : on désactive le bouton précédent. on est nécessairement sur la page 1 car on a fait le traitement des pages dans liste.php, pas besoin de mettre elseif ($courante==1)
$pagination.= "<span class=\"desactive\">« préc</span>";
/**
On affiche maintenant les pages. On cherchera à afficher au maximum 11 numéros de page en général, et 12 dans le cas 1 où il n'y a pas de troncature :
- dans un 1er cas, il n'y a pas assez de pages pour "tronquer la pagination" : on affiche toutes les pages
- dans le 2ème cas, il y a trop de pages : la troncature s'effectue selon la page sur laquelle on est positionnée
*/
// CAS 1 : il n'y a pas assez de pages pour tronquer, on les affiche toutes (voir figure 1)
if ($total < 7 + ($adjacentes * 2))
{
/*
on AJOUTE la page 1. On la traite séparément pour avoir liste.php au lieu de liste.php?page=1 et ainsi éviter le duplicate content
cette ligne équivaut à :
if ($courante == 1)
$pagination.= "<span class=\"courante\">1</span>";
else
$pagination.= "<a href=\"liste.php\">1</a>";
*/
$pagination.= ($courante == 1) ? "<span class=\"courante\">1</span>" : "<a href=\"liste.php\">1</a>";
// pour les pages restantes on utilise une simple boucle for
for ($compteur = 2; $compteur <= $total; $compteur++)
{
if ($compteur == $courante) // on affiche la page courante différemment pour la mettre en évidence
$pagination.= "<span class=\"courante\">$compteur</span>";
else
$pagination.= "<a href=\"liste.php?page=$compteur&total_pages=$total\">$compteur</a>";
}
}
// CAS 2 : on a assez de pages pour tronquer en fonction de la page actuelle
elseif($total > 5 + ($adjacentes * 2))
{
/*
on est placé dans la partie proche des premières pages, on tronque donc la fin de la pagination.
l'affichage sera 9 pages à gauche ... 2 pages à droite (voir figure 2)
*/
if($courante < 1 + ($adjacentes * 2))
{
// on affiche la page 1 comme vu précédemment
$pagination.= ($courante == 1) ? "<span class=\"courante\">1</span>" : "<a href=\"liste.php\">1</a>";
// puis les huit pages suivantes
for ($compteur = 2; $compteur < 4 + ($adjacentes * 2); $compteur++)
{
if ($compteur == $courante)
$pagination.= "<span class=\"courante\">$compteur</span>";
else
$pagination.= "<a href=\"liste.php?page=$compteur&total_pages=$total\">$compteur</a>";
}
// les ... pour marquer la troncature
$pagination.= " ... ";
// et enfin les deux dernières pages
$pagination.= "<a href=\"liste.php?page=$avder&total_pages=$total\">$avder</a>";
$pagination.= "<a href=\"liste.php?page=$total&total_pages=$total\">$total</a>";
}
/*
on est placé dans la partie centrale de notre pagination, on tronque donc le début et la fin de la pagination.
l'affichage sera 2 pages à gauche ... 7 pages au centre ... 2 pages à droite (voir figure 3)
*/
elseif($total - ($adjacentes * 2) > $courante && $courante > ($adjacentes * 2))
{
// on affiche les deux premières pages
$pagination.= "<a href=\"liste.php\">1</a>";
$pagination.= "<a href=\"liste.php?page=2\">2</a>";
// les ... pour marquer la troncature
$pagination.= " ... ";
// puis sept pages : les trois précédent la page courante, la page courante, puis les trois lui succédant
for ($compteur = $courante - $adjacentes; $compteur <= $courante + $adjacentes; $compteur++)
{
if ($compteur == $courante)
$pagination.= "<span class=\"courante\">$compteur</span>";
else
$pagination.= "<a href=\"liste.php?page=$compteur&total_pages=$total\">$compteur</a>";
}
// les ... pour marquer la troncature
$pagination.= " ... ";
// et enfin les deux dernière spages
$pagination.= "<a href=\"liste.php?page=$avder&total_pages=$total\">$avder</a>";
$pagination.= "<a href=\"liste.php?page=$total&total_pages=$total\">$total</a>";
}
/*
sinon on est placé dans la partie de droite, on tronque donc le début de la pagination.
l'affichage sera 2 pages à gauche ... 9 pages à droite (voir figure 4)
*/
else
{
// on affiche les deux premières pages
$pagination.= "<a href=\"liste.php\">1</a>";
$pagination.= "<a href=\"liste.php?page=2\">2</a>";
// les ... pour marquer la troncature
$pagination.= " ... ";
// et enfin les neuf dernières pages
for ($compteur = $total - (2 + ($adjacentes * 2)); $compteur <= $total; $compteur++)
{
if ($compteur == $courante)
$pagination.= "<span class=\"courante\">$compteur</span>";
else
$pagination.= "<a href=\"liste.php?page=$compteur&total_pages=$total\">$compteur</a>";
}
}
}
// pour finir on affiche le bouton suivant
if ($courante < $compteur - 1)
$pagination.= "<a href=\"liste.php?page=$suiv&total_pages=$total\">suiv »</a>\n";
else
$pagination.= "<span class=\"desactive\">suiv »</span>\n";
$pagination.= "</div>\n";
}
// et on retourne $pagination au programme appelant la fonction
return ($pagination);
Merci de m'aider a me sortir cette épine du pied !