Veröffentlicht 2. November 200618 j hi... ich habe mir eine kleine funktion zum blättern gebaut, soweit so gut momentan sieht es so aus Seite: << < 1 2 3 4 5 6 7 8 9 10 11 12 [ 13 ] 14 15 16 17 18 19 20 > >> ich möchte es aber bei so vielen seiten , also ab 20 denke ich so haben Seite: << < 9 10 11 12 [ 13 ] 14 15 16 17 > >> das er mir nur die vorherigen 4 und die nachfolgenden 4 anzeigt, ist sicher möglich aber ich hab 0 ahnung wie wenn jemand lange weile hat mein code: $seite = $_REQUEST[seite]; //$seite = aktuelle seite || $eintraege_anzahl = anzahl der einträge || $eintraege_pro_seite = einträge pro seite function seiten($seite, $eintraege_anzahl, $eintraege_pro_seite) { $anzahl_seiten = round($eintraege_anzahl / $eintraege_pro_seite) + 1; if(($eintraege_anzahl / $eintraege_pro_seite) > 1) { if(empty($seite)) { $seite = 1;} if($seite > 1) { if($seite != 2) { $seiten .= ' <a href="test.php?seite=1"> << </a>'; } //if ende $seiten .= ' <a href="test.php?seite='.($seite - 1).'"> < </a>'; } //if ende for($i = 1; $i < $anzahl_seiten; $i++) { if($seite == $i) { $seiten .= ' <a href="test.php?seite='.$i.'"><b>[ '.$i.' ]</b></a>'; } //if ende else { $seiten .= ' <a href="test.php?seite='.$i.'">'.$i.'</a>'; } //else ende } //for ende if($seite < ($anzahl_seiten - 1)) { $seiten .= ' <a href="test.php?seite='.($seite + 1).'"> > </a>'; if($seite != ($anzahl_seiten - 2)) { $seiten .= ' <a href="test.php?seite='.($anzahl_seiten -1).'"> >> </a>'; } //if ende } //if ende } //if ende $auflisten = 'Seite: '.$seiten; return $auflisten; }//function ende echo seiten($seite, 230, 10); [/PHP] ist sicher bisschen kompliziert geschrieben, verbesserungen gerne thx
2. November 200618 j Ich habe dafür mal eine Funktion gemacht, die ein Array mit den Seiten zurück gibt, die angezeigt werden sollen... Kannst auch gern die Klasse haben, damit könntest Du dann direkt die Navigation in nem Template parsen... $arrNav = getNavigationArray(6,100,4,9); echo "<pre>"; print_r($arrNav); echo "</pre>"; function getNavigationArray($aktPage, $itemCount = 0, $itemsPerPage = 5, $pagesPerNavigation = 10) { $resArr = array(); $pageArr = array(); if (!(intval($aktPage) > 0)) $aktPage = 1; if (!(intval($itemCount) >= 0)) $itemCount = 0; if (!(intval($itemsPerPage) > 0)) $itemsPerPage = 5; if (!(intval($pagesPerNavigation) > 0)) $pagesPerNavigation = 10; $resArr['pageCount'] = ceil ($itemCount/$itemsPerPage); $resArr['aktPage'] = $aktPage; $resArr['itemCount'] = $itemCount; $resArr['itemsPerPage'] = $itemsPerPage; $resArr['pagesPerNavigation'] = $pagesPerNavigation; $deltaPages = floor($pagesPerNavigation/2); $tmpPages = $deltaPages; $preArr = array(); $postArr = array(); $count = 1; for ($i = 1; ($i <= $tmpPages) && $count < $resArr['pageCount'] && ($count < $pagesPerNavigation); $i++) { if (($aktPage - $i) > 0) { $preArr[($aktPage - $i)] = ""; $count++; } else $tmpPages++; if (($aktPage + $i) <= $resArr['pageCount']) { $postArr[($aktPage + $i)] = ""; $count++; } else $tmpPages++; } ksort($preArr); foreach ($preArr as $key=>$val) { if ($key != $aktPage) { $pageArr[$key] = true; //($itemsPerPage * ($key-1)).",".$itemsPerPage; } } $pageArr[$aktPage] = false; //($itemsPerPage * ($aktPage-1)).",".$itemsPerPage; foreach ($postArr as $key=>$val) { if ($key != $aktPage) { $pageArr[$key] = true; //($itemsPerPage * ($key-1)).",".$itemsPerPage; } } $resArr['pages'] = $pageArr; $resArr['fromRes'] = ($itemsPerPage * ($aktPage-1)) +1; $resArr['toRes'] = ($itemsPerPage * ($aktPage-1))+$itemsPerPage; if ($resArr['toRes'] > $itemCount) $resArr['toRes'] = $itemCount; return $resArr; } [/PHP]
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.