ZuVieL Geschrieben 2. November 2006 Geschrieben 2. November 2006 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 Zitieren
Monty82 Geschrieben 2. November 2006 Geschrieben 2. November 2006 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] Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.