ccsuperstar
Invité n'ayant pas de compte PHPfrance
12 sept. 2008, 17:20
Voici ma fonction, pour la partie unité et dizaine ça à l'air de tourner mais par contre pour les centaines, je galère un peu plus
Si vous voyez des choses à modifier
Merci
function pager($params) {
$pagescount = ceil($params['count']/$params['limit']);
//echo $pagescount;
$currpage = $_GET['page'];
if($params['count'] == 0) return '1';
//echo $currpage;
//3 page_range : page_range_avant < page_range(pagecourante) < page_range_apres
$pages_range_avant ;
$pages_range_courant;
$pages_range_apres;
$nbchiffres_pagecourante = strlen($currpage);
if($nbchiffres_pagecourante==1){ //on est entre 1 et 9
$pages_range_avant=array();
if($pagescount<10){
$pages_range_courant = range(1, $pagescount ,1);
$pages_range_apres = '';
} else {
$pages_range_courant = range(1, 9 ,1);
if($pagescount - $currpage < 20){
$pages_range_apres = range(10, 10 ,1);
} else {
$pages_range_apres = range(10, $pagescount ,10);
}
}
} elseif($nbchiffres_pagecourante==2) {
//on choppe la dizaine
$dizaine = substr($currpage, 0, 1);
$unite = substr($currpage, 1, 1);
$pages_range_avant = array(1) + range(0, $currpage, 10);
echo $pagescount - $currpage;
if($pagescount - $currpage == 0){
$pages_range_courant = array($pagescount);
$pages_range_apres = '';
} elseif($pagescount - $currpage < 10){
$pages_range_courant = range($dizaine.'1' , $pagescount ,1) + array($pagescount);
$pages_range_apres = array();
} elseif($pagescount - $currpage>=10 && $pagescount - $currpage < 20){
$pages_range_courant = range($dizaine.'1' , $dizaine.'9' ,1) + array($pagescount);
$pages_range_apres = array(((substr($currpage, 0, 1)+1).'0'));
} else {
$pages_range_courant = range($dizaine.'1', $dizaine.'9' ,1);
$pages_range_apres = range(($dizaine+1).'0', $pagescount ,10) + array($pagescount);
}
//echo '$pages_range_courant=' .print_r($pages_range_courant)."\n";
//echo '$pages_range_apres=' .print_r($pages_range_apres)."\n";
} elseif($nbchiffres_pagecourante==3) {
//on choppe la centaine
$centaine = substr($currpage, 0, 1);
$dizaine = substr($currpage, 1, 1);
$unite = substr($currpage, 2, 2);
$nb_reste_pages = $pagescount - $currpage;
$pages_range_avant = array(1) + range(0, $currpage, 10);
if($nb_reste_pages == 0){
$pages_range_courant = '';
$pages_range_apres = '';
} elseif($nb_reste_pages < 20){
$pages_range_courant = range($centaine.$dizaine.'1', $centaine.$dizaine.'9' ,1);
if(($dizaine == 9 && $unite == 9) || $dizaine == 9){
$pages_range_apres = range((($centaine+1).'00'), $pagescount ,10) + array($pagescount);
} else {
$pages_range_apres = range(($centaine.($dizaine+1).'0'), $pagescount ,1) + array($pagescount);
}
} else {
$pages_range_courant = range($centaine.$dizaine.'1', $centaine.$dizaine.'9' ,1);
if(($dizaine == 9 && $unite == 9) || $dizaine == 9){
$pages_range_apres = range((($centaine+1).'00'), $pagescount ,10) + array($pagescount);
} else {
$pages_range_apres = range(($centaine.($dizaine+1).'0'), $pagescount ,10) + array($pagescount);
}
}
/**/
}
$src = '';
foreach($pages_range_avant as $number) {
$src .= ' <a href="'.$params['src'].$number.'" class="pager" onclick="'.$params['onclick'].'">'.$number.'</a> ';
}
$src .= ' - ';
if(!empty($pages_range_courant)){
foreach($pages_range_courant as $number) {
$src .= ' <a href="'.$params['src'].$number.'" class="pager" onclick="'.$params['onclick'].'">'.$number.'</a> ';
}
}
$src .= ' - ';
if(!empty($pages_range_apres)){
foreach($pages_range_apres as $number) {
$src .= ' <a href="'.$params['src'].$number.'" class="pager" onclick="'.$params['onclick'].'">'.$number.'</a> ';
}
}
return $src;
}
$params['count'] = 3569;
$params['limit']=20;
$params['from']=$_GET['page'];
$params['src'] ='/test_pager2.php?page=';
$params['onclick'] ='';
echo pager($params);