PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

Erweiterte Blätterfunktion

Zurück zur Übersicht

Manchmal ist es nicht ausreichend, wenn die Blätterfunktion alle Unterseiten anzeigt.
Dies ist z.B. der Fall, wenn man in einem Gästebuch o.ä. 80 Seiten hat.

Darum hier meine Funktion für eine Blätterfunktion, wo nur eine bestimmte Anzahl von Seiten angezeigt werden:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
<?php
function blaetterfunktion($seite,$maxseite,$url="",$anzahl=4,$get_name="seite")
   {
   if(
ereg("\?",$url)) $anhang "&";
   else 
$anhang "?";

   if(
substr($url,-1,1) == "&") {
      
$url substr_replace($url,"",-1,1);
      }
   else if(
substr($url,-1,1) == "?") {
      
$anhang "?";
      
$url substr_replace($url,"",-1,1);
      }

   if(
$anzahl%!= 0$anzahl++; //Wenn $anzahl ungeraden, dann $anzahl++

   
$a $seite-($anzahl/2);
   
$b 0;
   
$blaetter = array();
   while(
$b <= $anzahl)
      {
      if(
$a AND $a <= $maxseite)
         {
         
$blaetter[] = $a;
         
$b++;
         }
      else if(
$a $maxseite AND ($a-$anzahl-2)>=0)
         {
         
$blaetter = array();
         
$a -= ($anzahl+2);
         
$b 0;
         }
      else if(
$a $maxseite AND ($a-$anzahl-2)<0)
         {
         break;
         }

      
$a++;
      }
   
$return "";
   if(!
in_array(1,$blaetter) AND count($blaetter) > 1)
      {
      if(!
in_array(2,$blaetter)) $return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=1\">1</a>&nbsp;...";
      else 
$return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=1\">1</a>&nbsp;";
      }

   foreach(
$blaetter AS $blatt)
      {
      if(
$blatt == $seite$return .= "&nbsp;<b>$blatt</b>&nbsp;";
      else 
$return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$blatt\">$blatt</a>&nbsp;";
      }

   if(!
in_array($maxseite,$blaetter) AND count($blaetter) > 1)
      {
      if(!
in_array(($maxseite-1),$blaetter)) $return .= "...&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$maxseite\">letzte</a>&nbsp;";
      else 
$return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$maxseite\">$maxseite</a>&nbsp;";
      }

   if(empty(
$return))
      return  
"&nbsp;<b>1</b>&nbsp;";
   else
      return 
$return;
   }   
?>


An die Funktion wird folgendes Übergeben:
$seite: Auf welcher Seite der Besucher immoment ist.
$maxseite: Wieviele Unterseiten es insgesamt gibt.
$url: Die URL, auf die die Links verweisen sollen.
$anzahl: Wieviele Links zu den Seiten ausgegeben werden soll.
$get_name: Der GET-Name für die Seitenanzahl. Wenn dieser seite heißt, dann wird an die URL ?seite=xxx angehängt.

Die Werte für $url, $anzahl und $get_name sind optional.


Kombination mit der einfachen Blätterfunktion
Dieses lässt sich eigentlich sehr einfach mit unserer einfachen Blätterfunktion kombinieren. Als erstes muss man natürlich irgendwie die Funktion mit einbinden, entweder in einer anderen Datei auslagern und per include laden oder direkt in die Datei einbinden.
Anschließend, dort wo vorher die Ausgabe der Seiten waren, steht nun der Aufruf der Funktion.

Insgesamt sieht es so aus:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
<?php
//Hier muss die Funktion 'blaetterfunktion' stehen
//Entweder per include laden, oder
//direkt einbinden, also
//function blaetterfunktion($seite,$maxseite,$url="",$anzahl=4,$get_name="seite") //{
//...
//}

// Alter Code wie gewohnt

$seite $_GET["seite"];  //Abfrage auf welcher Seite man ist

//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
   
$seite 1;


//Verbindung zu Datenbank aufbauen

$link mysql_connect("localhost","Username","Passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("Datenbank") or die ("Die Datenbank existiert nicht");


//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite 15;

//Ausrechen welche Spalte man zuerst ausgeben muss:

$start $seite $eintraege_pro_seite $eintraege_pro_seite;


//Tabelle Abfragen
//Tabelle hei&szlig;t hier einfach: Tabelle
$abfrage "SELECT * FROM Tabelle LIMIT $start, $eintraege_pro_seite";
$ergebnis mysql_query($abfrage);
while(
$row mysql_fetch_object($ergebnis))
    {
   echo 
$row->id."<br>"// Hier die Ausgabe der Einträge
   
}


//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5


//Wie viele Einträge gibt es überhaupt

//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, blo&szlig; das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id

$result mysql_query("SELECT COUNT(*) FROM Tabelle");
$menge mysql_fetch_row($result);
$menge $menge[0];

//Errechnen wie viele Seiten es geben wird
$wieviele_seiten ceil($menge $eintraege_pro_seite);


//Ausgabe der Seitenlinks:
echo "<div align=\"center\">";
echo 
"<b>Seite:</b> ";


//*****************************************
//* Dieser Abschnitt ist neu
//*****************************************
//Aufruf unserer Funktion
echo blaetterfunktion($seite,  $wieviele_seiten);


echo 
"</div>";
?>



Für Fragen bitte extra Thema im PHP-Forum eröffnen.

Kommentare

Zurück zur Übersicht

Autor Andavos

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» MySQL schreibt anstatt ä das: ä

» Adressbuch erweitern.

» Wie überschreibt man Text ?







© PHP-Einfach.de 2003 - 2012