Bonjour à tous,
Je vous propose de faire un petit regroupement de fonctions PHP, javascript ou autre langage, que vous utilisez souvent et que vous désirez partager avec d'autres développeurs
Je commence avec une petite fonction permettant de faire une pagination à la mode phpBB (voir en bas à droite du forum par exemple).
===================================================
Sommaire :
* Script permettant la mise en forme d'une liste de pages (comme un forum par exemple) par mowmow
* Debug (print_r avancé) par La Chaise Sauvage
* Fonction de comparaison de chaine de caractères en trois modes (test d'égalité, présence du mot dans l'autre ou expression régulière) par Mumuri
* Fonction permettant de lancer une commande linux($cmd) et d'afficher le succès ou l'échec de l'opération par dadovb
* Fonction qui met en gras le texte $x de la chaine $var
* Fonction de mise en forme de texte pour utilisation dans une URL (Par exemple pour de l'URL Rewriting) par magic corp.
===================================================
Code :
Utilisation :
$actual_page : Page actuelle dans la pagination
$page_number : Nombre de pages au total
$url : ce qui apparaîtra comme lien pour chaque page, exemple : /sommaire/theme/page-{id} => Précisez {id} dans votre url pour que l'id y soit affecté.
$show : Nombre de liens à afficher au début, au milieu et à la fin, doit être impair !
En pratique :
Pour tester :
Je ferais un petit sommaire dans ce premier post si les contributions sont nombreuses Je continuerais de poster quelques morceaux de scripts qui me sont bien utiles
Bon partage
Je vous propose de faire un petit regroupement de fonctions PHP, javascript ou autre langage, que vous utilisez souvent et que vous désirez partager avec d'autres développeurs
Je commence avec une petite fonction permettant de faire une pagination à la mode phpBB (voir en bas à droite du forum par exemple).
===================================================
Sommaire :
* Script permettant la mise en forme d'une liste de pages (comme un forum par exemple) par mowmow
* Debug (print_r avancé) par La Chaise Sauvage
* Fonction de comparaison de chaine de caractères en trois modes (test d'égalité, présence du mot dans l'autre ou expression régulière) par Mumuri
* Fonction permettant de lancer une commande linux($cmd) et d'afficher le succès ou l'échec de l'opération par dadovb
* Fonction qui met en gras le texte $x de la chaine $var
* Fonction de mise en forme de texte pour utilisation dans une URL (Par exemple pour de l'URL Rewriting) par magic corp.
===================================================
Code :
Code:
function pagination($actual_page, $page_number, $url, $show = 3) {
// Erreurs
if($show % 2 == 0 || $show < 3) {
return 'Erreur : $show ne doit pas être pair, égal à 0 ou égal à 1';
}
if($page_number < $actual_page) {
return 'Erreur : la page actuelle est supérieure au nombre de pages.';
}
// Erreurs
if($page_number < $show*4) {
for($i = 1; $i <= $page_number; $i++) {
if($i != $actual_page) {
$debut[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
}
else {
$debut[] = $i;
}
}
return implode(', ', $debut);
}
// Debut
$debut_fin = $actual_page <= $show-1 ? $show : $actual_page < $show*2 ? $actual_page+1 : $show;
$debut_fin = $actual_page == 1 ? $show : $debut_fin;
for($i = 1; $i <= $debut_fin; $i++) {
if($i != $actual_page) {
$debut[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
}
else {
$debut[] = $i;
}
}
// Milieu
$milieu_verify = $actual_page-1 < $page_number - $show*2 && $actual_page+1 > $show*2 ? 1 : 0;
$milieu_debut = $milieu_verify ? ($actual_page-floor($show/2)) : 1;
$milieu_end = $milieu_verify ? ($actual_page+floor($show/2)) : 0;
for($i = $milieu_debut; $i <= $milieu_end; $i++) {
if($i != $actual_page) {
$milieu[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
}
else {
$milieu[] = $i;
}
}
// Fin
$fin_debut = $actual_page >= $page_number-$show+1 ? $page_number-$show : $actual_page > $page_number-$show*2 ? $actual_page-1 : $page_number-$show+1;
$fin_debut = $actual_page == $page_number ? $page_number-$show+1 : $fin_debut;
$fin_fin = $page_number;
for($i = $fin_debut; $i <= $fin_fin; $i++) {
if($i != $actual_page) {
$fin[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
}
else {
$fin[] = $i;
}
}
// Résultat
return implode(', ', $debut).($milieu ? ' ... '.implode(', ', $milieu).' ... ' : ' ... ').implode(', ', $fin);
}
Utilisation :
$actual_page : Page actuelle dans la pagination
$page_number : Nombre de pages au total
$url : ce qui apparaîtra comme lien pour chaque page, exemple : /sommaire/theme/page-{id} => Précisez {id} dans votre url pour que l'id y soit affecté.
$show : Nombre de liens à afficher au début, au milieu et à la fin, doit être impair !
En pratique :
Code:
echo pagination($_GET['page'], ceil($count/$limit), '/mon_url/{id}.html', 3);
Pour tester :
Code:
echo pagination(10, 50, '/mon_url/{id}.html', 3);
Je ferais un petit sommaire dans ce premier post si les contributions sont nombreuses Je continuerais de poster quelques morceaux de scripts qui me sont bien utiles
Bon partage