PHP

Seitenaufteilung in Php (PHP Tutorial)

Tutorial erstellt von Rene, letzte Änderung am 21.06.2008

Liebe User, da mich immer sehr viele Leute fragen "du, wie mach ich so ne Seitenaufteilung wie bei Gästebüchern?" werde ich das hier mal ein wenig erläutern.

Bereits zu Beginn sei gesagt: Es ist nicht schwer, aber man sollte auch etwas Erfahrung in der Materie haben.
Ich werde hier erklären, wie man Datensätze, die aus einer MySQL Datenbank kommen, aufteilt.
Voraussetzung ist natürlich eine aktive Verbindung zur Datenbank.
Bei der MySQL Abfrage müsst ihr eure Spalten und den Tabellennamen entsprechend angeben.
Nun gut, kommen wir zum praktischen Teil:

Code:
$result = mysql_query("SELECT * FROM db ORDER BY datum");
$gesamt = mysql_num_rows($result);
$eintraege_pro_seite = 10;


Hier werden zunächst alle Datensätze ausgelesen und deren Anzahl anschließend mit der Funktion mysql_num_rows() ermittelt. (Zeile 2)
Dieser Wert wird der Variable $gesamt zugewiesen.
Tragt in Zeile 1 die Spalten und den Tabellennamen für die gewünschte Abfrage ein!
In Zeile 3 wird angegeben, wie viele Einträge pro Seite angezeigt werden sollen.
Aktuell werden 10 Einträge angezeigt, nach denen auf nächste die Seite gewechselt werden kann.

Code:
$num_sites = ceil($gesamt/$eintraege_pro_seite);

if(empty($_GET['site']))
{
  $site = 1;
}
elseif($_GET['site'] <= 0 || $_GET['site'] > $num_sites)
{
  $site = 1;
}
else
{
  $site = $_GET['site'];
}

$links = array();
if($site != 1)
{
  $prev = $site-1;
  $links[] = '<a href="seite.php?site='.$prev.'">&laquo;</a>';
}
for($i=1;$i<=$num_sites;$i++)
{
  if($i == $site)
  {
    $links[] = $i;
  }
  else
  {
    $links[] = '<a href="seite.php?site='.$i.'">'.$i.'</a>';
  }
}
if($site != $num_sites)
{
  $next = $site+1;
  $links[] = '<a href="seite.php?site='.$next.'">»</a>';
}
$link_string = implode(" | ", $links);
$start = ($site-1)*$eintraege_pro_seite;
$start_nr = $start+1;
$ende = $start+10;

if($ende > $gesamt)
{
  $ende = $gesamt;
}


Dieser Code-Teil teilt jetzt die Seiten auf und setzt die Links.
Es gibt 3 Links, die ihr nach Belieben anpassen könnt:
$links[] = '<a href="seite.php?site='.$i.'">'.$i.'</a>';
seite.php dürft ihr verändern in eure Seite..
Achtet darauf, dass die Variable $site immer stehen bleibt!

So zur Ausgabe der Seitenanzeige:

Code:
echo $link_string.'<br />Aktuelle Beiträge: '.$start_nr.' - '.$ende;


Alle drei Variablen wurden im oberen Code-Teil schon festgelegt.
$link_string enthält alle Links für die einzelnen Seiten und mit $start_nr und $ende werden die Nummern der aktuellen Beiträge angezeigt.
Diese können bei Bedarf auch weggelassen werden.

So wir kommen nun zum wichtigsten Teil des Scriptes:
Die Hauptausgabe.

Als erstes lesen wir wieder die Beiträge aus:

Code:
$result2 = mysql_query("SELECT * FROM db ORDER BY datum DESC LIMIT ".$start.",".$eintraege_pro_seite);


Hier wird mit $start und $eintraege_pro_seite festgelegt, welche Einträge ausgelesen werden sollen.
Ändert wieder die Spalten und den Tabellennamen eurer Datenbank entsprechend!

Nachdem ihr das gemacht habt, könnt ihr über eine while-Schleife eure Beiträge ausgeben:

Code:
while($row = mysql_fetch_array($result2))
{
  echo $row[name];
}


Zeile 2 ändert ihr in eure gewünschte Ausgabe.

Ich hoffe es hat alles geklappt.
Ich wünsche euch viel Spaß mit eurer neuen Ausgabe.
Wenn ihr Fragen habt stellt sie einfach im Forum.

LG René

Seitenaufteilung von Datenbanksätzen (Beispiel: Gästebücher usw.)


>> Allgemeine Fragen oder Probleme mit dem Tutorial? Hier gehts zum Forum!

Impressum / Datenschutzerklärung          © der-Webdesigner.net 2002 - 2011           top ▲