Loading...   Upload Image

Blaetterfunktion (Seitennavigation)Tutorials » PHP/MySQL Tutorials » Blaetterfunktion (Seitennavigation)

Verfasst von Alice am 04.05.2009 - wurde schon 30217 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
21x bewertet
Schwierigkeit: mittel
Kommentare: [ 15 ]

Tag - Schlagwort PHP Tag - Schlagwort Navigation Tag - Schlagwort Blaetterfunktion Tag - Schlagwort Pagination

Blaetterfunktion (Seitennavigation) - Tutorial

Ich wurde gebeten die Seitennavigation(Blaetterfunktion), die in vielen meiner Scripte zum Einsatz kommt, doch bitte genauer zu erklaeren.
Nun diesem Wunsch moecht ich heute gerne nachkommen.

Wie Schauts aus?




Die Blaetterfunktion ist immer nach folgendem Schema aufgebaut


- DB Abfrage => erst mal die Anzahl aller Datensaetze feststellen
- Festlegen wie viele Datensaetze pro Seite angezeigt werden sollen
- Festlegen wie viele Links in der Navigation spaeter angezeigt werden sollen
- Startwert fuer die spaetere DB Abfrage definieren
- Dann wird ggf. die aktuelle Seite korrekgiert, damit nicht bei 0 angefangen wird zu Zaehlen
- Array bilden, in dass dann die Links der Seitennavigation gesteckt werden || $links = array();
- Link definieren => Zur Erste Seite springen
- Link definieren => eine Seite zurueck blaettern
- einzelne Seitenlinks bilden
- Link definieren => eine Seite vorwaerts blaettern
- Link definieren => Zur letzen Seite springen
- Zusammenfuegen der einzelnen Links zu einem String || implode(" ", $links);
- erneute DB Abfrage => mit LIMIT $start,$datensaetze_pro_seite, damit nur die gewuenschte Anzahl jeweils ausgegeben wird

Beispiel


Nehmen wir einmal an unsere Tabelle traegt die Bezeichnung user und ist wie folgt aufgebaut


Damit nun alle User ausgelesen werden und das Ganze dann auf mehrere Seite verteilt, mit Blaetterfunktion dargestellt wird, muesste der Code wie folgt aussehen:
 $seiten){

    $go = 1;         // Variable definieren

}else{ // Wenn Obiges nicht zutraf

    $go = mysql_real_escape_string($_GET['go']);     // Variable definieren
}

$links = array(); // Linkkette bilden

// Seite die vor der aktuellen Seite kommt definieren
if(($go - $p) < 1){ $davor = $go - 1;  }else { $davor = $p; }            

// Seite die nach der aktuellen Seite kommt definieren
if(($go + $p) > $seiten){ $danach = $seiten - $go; }else{ $danach = $p; }   
       
$off = ($go - $davor); // Variable definieren   
                
if ($go- $davor > 1){ // Link definieren => Zur Erste Seite springen         
    $first = 1;
       $links[] = "« Erste ...\n";      
}      

if($go != 1){ // Link definieren => eine Seite zurueck blaettern          
    $prev = $go-1;
    $links[] = " «\n";     
}   
       
       
for($i = $off; $i <= ($go + $danach); $i++){ // einzelne Seitenlinks erzeugen

  if ($i != $go){  // Link definieren            
  
        $links[] = "$i\n";
        
  }elseif($i == $seiten) { // aktuelle Seite, ein Link ist nicht erforderlich             
        
        $links[] = "[ $i ]\n";  
        
  }elseif($i == $go){ // aktuelle Seite, ein Link ist nicht erforderlich             
  
        $links[] = "[ $i ]\n";
        
  } // close if $i      
}                

if($go != $seiten){ // Link definieren => eine Seite weiter blaettern       
    $next = $go+1;
    $links[] = " » \n";
}      
    
if($seiten - $go - $p > 0 ){ // Link definieren => Zur letzen Seite springen   
    $last = $seiten; 
    $links[] = "... Letzte »\n";
}      

$start = ($go-1) * $datensaetze_pro_seite;             // Berechne den Startwert fuer die DB


$link_string = implode(" ", $links); // Zusammenfuegen der einzelnen Links zu einem String

$abfrage = mysql_query("SELECT ID, Name, Email, DATE_FORMAT(Datum, '%d.%m.%Y') AS datum FROM user LIMIT $start,$datensaetze_pro_seite ");

// Daten ausgeben
while($row = mysql_fetch_object($abfrage)){
    
    echo "

".$row->ID." - "$.row->Name."
\n"; echo "Email: ".$row->Email."
\n"; echo "Datum: ".$row->datum."\n

"; } // close while // -------------------------------------- Seitennavigation ausgeben ---------------------------- echo "
\n"; echo "Seite ".$go." von ".$seiten."\n"; echo $link_string; // Ausgabe der Seitennavigation echo "
\n"; // -------------------------------------- Seitennavigation ende -------------------------------- ?>

Damit die Seitennavigation dann auch so dargestellt wird wie oben in der Grafik gezeigt,
ist noch etwas CSS von Noeten ...
#navigation a {
	border: 1px solid #E0E0E0;
	margin: 0 1px;
	padding: 4px 7px;
	color: #444; 
	font-weight: bold;
	text-decoration: none;
}

#navigation a:visited {
	color: #507DB4; 
	font-weight: normal;
	text-decoration: none;
}

#navigation a:hover, #navigation a:active {
	border: 1px solid #507DB4;
	background: #F8F8F8;
	color: #737373; 
	text-decoration: none;
}

.current {
	border: 1px solid #E0E0E0;
	padding: 4px 7px;
	color: #444; 
}

.pages{
	border: 1px solid #E0E0E0;
	padding: 2px 7px;
	float: right;
	margin: -3px 0 0;
}

So hiermit hoffe ich ist das Geheimnis, um die haeufig gebrauchte Blaetterfunktion, nun gelueftet :)

Kommentar schreibenHinterlasse einen Kommentar

Du musst angemeldet sein, um einen Kommentar zu hinterlassen...

Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...


Affiliates:   Gallery Yuri  •   Colorful Gfx  •   Blue-Graphics  •   Design Grafixx  •   The Seduction  •   Chibi Graphics  •   Pat DG  • Show all ...
designenlassen.de - Der Design-Marktplatz für Webdesign, Logo-Design, Flyerdesign u.v.m.        ALL-INKL.COM - Webhosting Server Hosting Domain Provider