PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FUNCTION printPageNavi



MS78FTL
04.08.2005, 23:14
Hi @ all,

hab mal ne blätterfunktion für Newsscripte, Gästebücher u.s.w. gebastelt

Die Funktion:

function printPageNavi($entrys, $page, $path) {

global $entspp; # Datensätze pro Seite

$seiten = ceil($entrys / $entspp); # Anzahl der Seiten


# Seiten Index mit nur 7 Seiten
if($page <= 3) $j = 1; # Index start - Page = 1
else $j=$page-3; # Index start - Page = -3
if($page >= ($seiten-3)) $k=$seiten; # Index ende - Page = letzte
else $k=$j+6; # index ende - Page = Index start + 6

$return['index'] = "Seite ".$page."/".$seiten.": "; # Seite x von y
if($page > 4) $return['index'] .= "[<a href=\"".$path."page=1\">«</a>] "; # Zur ersten Seite
if($page > 1) {
$i=$page-1;
$return['index'] .= "[<a href=\"".$path."page=$i\">‹</a>] "; # Seite Back wenn Seite > 1
}
for($i = $j; $i <= $k; $i++) {
if($i==$page) $return['index'] .= " (<b>$i</b>) "; # aktuelle kein Link
else $return['index'] .= " [<a href=\"".$path."page=$i\">$i</a>] "; # Seitenzahlen Anzeigen
}
if($page < $seiten) {
$i=$page+1;
$return['index'] .= " [<a href=\"".$path."page=$i\">›</a>] "; # Seite Forward wenn nicht auf letzter Seite
}
if($page < ($seiten - 4)) {
$return['index'] .= "[<a href=\"".$path."page=$seiten\">»</a>]"; # zur letzten Seite
}
return $return['index'];
}

zum aufruf der funktion bzw. auslesen der daten folgender Beispiel Code:

# wenn keine seite angegeben ist Seite = 1
if(!isset($page) || $page==0) { $page = 1; }

# zählen aller datensätze
list($entrys) = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM table"));

# Datensätze pro Seite
$entspp = 8;

# funktion aufrufen + Pfadangabe für die links 'gbook.php?' oder 'index.php?test=on&' oder $PHP_SELF.'?'
# $index enthält dann die Navi im format sihe Beispiele:
# "Seite 1/21: (1) [2] [3] [4] [5] [6] [7] [›] [»]" oder
# "Seite 6/21: [«] [‹] [3] [4] [5] (6) [7] [8] [9] [›] [»]"
$index = printPageNavi($entrys, $page, 'gbook.php?');

# auslesen der Daten für die jeweilige Seite
$result = mysql_query("SELECT * FROM table LIMIT ".($page-1) * $entspp.",$entspp");

Besten Dank an Stone!


MfG,
Micha

st0n3
05.08.2005, 00:05
Hi MS78FTL nette Funktion hast du da:) Eine Zeile könntest Du da noch verbessern. Und zwar anstatt die Zeilen mittles mysql_num_rows zählen zu lassen
$entrys = mysql_num_rows(mysql_query("SELECT * FROM table")); könntest Du mit der MySQL Funktion COUNT() schon erledigen.
list($entrys) = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM table"));

Gruß st0n3