Jan 06

Blätterfunktion mit PHP und mySQL.

Tag: PHP Tipps und TricksLeichti @ 2:56 pm

In Gästebüchern, Newsskript etc. ist es sehr oft sinnvoll eine PHP Blätterfunktion einzubauen. Man sollte mittels PHP bzw mySQL die Ausgabe auf mehrere Seiten verteilen und somit übersichtlicher gestallten. Um eine Blätterfunktion mit PHP und mySQL zu realisieren ist prinzipiell nur eine einzige mySQL Funktion nötig...

Das Stichwort für eine funktionierende Blätterfunktion lautet LIMIT. LIMIT gibt eine gewisse Datenmenge x ab dem Eintrag y aus! Dies können wir optimal nutzen um unsere Blätterfunktion für PHP zu erstellen.

So genug geredet so sieht das ganze nun erst einmal als PHP-Code aus!

 
function limitierte_ausgabe($anfang, $eintrage_lesen) {
 
	mysql_connect("localhost, username, passwort");
	mysql_select_db("tabelle");
 
	$sql = 'SELECT*
		FROM guestbook
		ORDER BY datum desc
		LIMIT '.$anfangen.', '.$eintrage_lesen;
 
	$query = mysql_query($sql);
 
		while($row = mysql_fetch_assoc($query)) {
			$gaestebuchausgabe[] = $row;
		}
	return $gaestebuchausgabe;
}
 

So dies währe jetzt eigentlich schon eine Funktion die uns eine PHP bzw mySQL Blätterfunktion ermöglicht, doch wie wendet man diese nun an?

 
function limitierte_ausgabe($auslesen_beginnen, $eintrage_lesen) {
 
	mysql_connect("localhost, username, passwort");
	mysql_select_db("tabelle");
 
	$sql = 'SELECT*
		FROM guestbook
		ORDER BY datum desc
		LIMIT '.$auslesen_beginnen.', '.$eintrage_lesen;
 
	$query = mysql_query($sql);
 
		while($row = mysql_fetch_assoc($query)) {
			$gaestebuchausgabe[] = $row;
		}
	return $gaestebuchausgabe;
}
 
$eintraege_seite = 10; /// 10 Einträge/Seite
$aktuelle_seite = $_GET["page"];
	if(!$_GET["page"]>=1) /// Wenn die Seite nicht größer oder gleich 1 ist
		$aktuelle_seite = 1; /// Soll sie 1 sein
 
$auslesen_beginnen = $eintraege_seite*$aktuelle_seite - $eintraege_seite;
 
/* Und nun nur noch die Funktion aufrufen */
$ausgabewerte = limitierte_ausgabe($auslesen_beginnen, $eintraege_seite);
 

Rufen wir jetzt unsere Funktion limitierte_ausgabe auf, so müssen wir 2 Parameter eingeben ($auslesen_beginnen, $eintraege_seite), diese werden dann an unsere mySQL Funktion limit weitergegeben, um eben nur eine gewisse Anzahl an Einträge auszulesen!

Wie ja bekannt ist gibt mysql_fetch_assoc($query) ja eine Zeile nach der Anderen aus. Mit LIMIT werden jedoch nicht immer alle Zeilen in unserer Datenbank angesprochen, sondern nur eine gewisse Anzahl beginnend von dem Eintrag x von dennen die normal ausgelesen werden würden!

Ein kleines Beispiel:
Wir haben eine Gästebuchdatenbank mit 20 Einträgen. Wenn wir jetzt nur die ersten 10 Einträge auslesen wollen, müssen wir mit LIMIT angeben von wo weg, bis wo hin, hier speziell LIMIT 0,10 so. Wir wollen also vom ersten Beitrag (0) weg, 10 Beiträge auslesen! Wenn wir jetzt die Einträge 10-20 anzeigen möchten, so müssen wir ganz einfach LIMIT 10,10 angeben. Dies heist jetzt, es werden vom 10ten Eintrag weg 10 weitere Einträge ausgelesen!

Was nun noch fehlt ist eine Ausgabe der Seiten. Wir lesen mittels $_GET["page"] aus auf welcher Seite wir gerade sind. Somit müssen wir nun einfach mittels einer Schleife die Links zu den Seiten ausgeben. Vorher muss nur noch geprüft werden wie viele Seiten wir haben, dies machen wir mittels mySQL, wir schauen wie viele Datensätze vorhanden sind, dividieren diese durch die Anzahl an Einträge/ Seite und runden diese Zahl auf! Fertig...

 
$query = mysql_query('SELECT COUNT(*) as zeilen FROM guestbook');
$row = mysql_fetch_assoc($query);
$zeilen = $row["zeilen"];
$seiten = ceil($zeilen/$eintraege_seite);
 
	for($i=1;$i<=$seiten;$i++) {
		echo "<a href=\"?page=". $i ."\">". $i ."</a> ";
	}
 

Und das war eigentlich schon alles um eine PHP Blätterfunktion mit mySQL Datenbank zu programmieren. Solltest du Fragen haben oder etwas unverständlich erklärt sein schreib bitte einfach einen Kommentar, ich werde innerhalb von 24 Stunden darauf antworten!

Viel spaß mit eurer eigenen PHP Blätterfunktion! ;)

PS: Wenn hier etwas unverständlich erklärt ist, bitte meldet euch



Tags: , , , ,

2 Kommentare zu “Blätterfunktion mit PHP und mySQL.”

  1. Sebastian says:

    hallo, erstmal vielen dank für das script-snippet, hat mir wriklich weitergeholfen. wollte dich aber auch auf einen kleinen fehler hinweisen:

    in der letzten for-schleife muss stehen

    for($i=1;$i<=$seiten;$i++) {
    echo ““. $i .” “;
    }

    also die Variable $i = 1, zumindest musste ich es so machen, da er sonst auch die Seite 0 ausgibt, die identisch mit der seite 1 ist.

    nochmal vielen dank
    gruß sebastian

  2. Yzzmhryi says:

    Great site,

Dein Kommentar