Daten auf mehreren Seiten aufteilen

Damit nicht alle Daten auf einmal auf der Seite zu sehen sind, sondern übersichtlich auf mehreren Seiten verteilt stehen, benutzt man eine Seitennavigation zum blättern (Blätterfunktion / Pagination).

Seitennavigation mit Zahlen (Datei)

Daten einer externen Datei auf mehreren Seiten aufteilen.


QuelltextKopierenAusblendenZeilen

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
<!DOCTYPE html>
<html>
 <head>
  <title>Daten aus einer Datei auf mehreren Seiten aufteilen</title>

  <style>
  body {
   font-family: Verdana, Sans-Serif;
   background-color: Oldlace;
  }
  a:link, a:visited {
   text-decoration: None;
   color: #FF0000;
  }
  </style>


 </head>
<body>

Blindtext - Seite: 
<?php
/* Daten aus einer Datei auf mehreren Seiten aufteilen */

// Datei "blindtext.txt" in ein Array ($daten) einlesen
// Trennzeichen ist der Zeilenumbruch (CR)
$daten file("blindtext.txt");

// Um ein anderes Trennzeichen zu benutzen lesen Sie die Datei mit:
// $daten = file_get_contents("blindtext.txt")
// ein und teilen Sie die Daten mit explode(Trennzeichen, $daten):
// $daten = explode(";", $daten);

// Wieviele Einträge sollen pro Seite angezeigt werden
$eintraege_pro_seite 2;

// Überprüfen ob über $_GET["seitenzahl"] eine Seitenzahl gesendet wurde
$seitenzahl = ((isset($_GET["seitenzahl"])) ? $_GET["seitenzahl"] : 0);

$fortlaufende_nummer 0// $fortlaufende_nummer auf 0 setzen

// Die Schleife zeigt jeden X-ten ($eintraege_pro_seite) Datensatz mit einem Link an
for ($zaehler 0$zaehler < count($daten); $zaehler $zaehler $eintraege_pro_seite) {
 
$fortlaufende_nummer++; // $fortlaufende_nummer erhöhen
 // Mit dem Link wird seitenzahl=$zaehler als $_GET["seitenzahl"] übergeben
 
echo '<a href="?seitenzahl=' $zaehler '">
 
// Die aktuelle Seite hervorheben
 
(($zaehler == $seitenzahl) ? "[" $fortlaufende_nummer "]" $fortlaufende_nummer) .
 
'</a> &nbsp;';
}

// Die ausgewählten Datensätze in einer Schleife ausgeben
for ($zaehler $seitenzahl$zaehler < ($seitenzahl $eintraege_pro_seite); $zaehler++) {
 if (isset(
$daten[$zaehler])) {
  echo 
"<p>. ($zaehler 1) . ". " $daten[$zaehler] . "</p>\n";
 }
}
?>

</body>
</html>

Kombinierte Formular.- und Blätterfunktion (Datei)

Daten einer externen Datei auf mehreren Seiten aufteilen. Mit den Pfeilsymbolen zur nächsten oder vorherigen Seite wechseln oder durch die Eingabe einer Seitenzahl in das Formularfeld.


QuelltextKopierenAusblendenZeilen

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
<!DOCTYPE html>
<html>
 <head>
  <title>Daten aus einer Datei auf mehreren Seiten aufteilen
 (Kombinierte Formular.- und Blätterfunktion)</title>

  <style>
  body {
   font-family: Verdana, Sans-Serif;
   background-color: Mintcream;
  }
  a:link, a:visited {
   text-decoration: None;
   color: #FF0000;
  }
  </style>


 </head>
<body>

Blindtext
<?php
/* Daten aus einer Datei auf mehreren Seiten aufteilen
 (Kombinierte Formular.- und Blätterfunktion) */

// Datei "blindtext.txt" in ein Array ($daten) einlesen
// Trennzeichen ist der Zeilenumbruch (CR)
$daten file("blindtext.txt");
// Um ein anderes Trennzeichen zu benutzen lesen Sie die Datei mit:
// $daten = file_get_contents("blindtext.txt")
// ein und teilen Sie die Daten mit explode(Trennzeichen, $daten):
// $daten = explode(";", $daten);

$daten array_merge(array(0=>""), $daten);
$AnzahlDatensaetze count($daten) - 1;

// Die Aktuelle Seite ermitteln
$AktuelleSeite = isset($_GET["seite"]) ? $_GET["seite"] : 1;
// Den über $_GET gesendeten Wert überprüfen und ggf. ändern
$AktuelleSeite ctype_digit($AktuelleSeite) ? $AktuelleSeite 1;
$AktuelleSeite $AktuelleSeite < || $AktuelleSeite > $AnzahlDatensaetze $AktuelleSeite;

// Die Datensatz ausgeben
if (isset($daten[$AktuelleSeite])) {
 echo 
"<p>$daten[$AktuelleSeite] . "</p>\n";
}

// Formular.- und Blätterfunktion
echo '<form action="' $_SERVER["SCRIPT_NAME"] . '" method="GET" autocomplete="off">.
 ((
$AktuelleSeite 1> ?
 
'<a href="?seite=' . ($AktuelleSeite 1) . '">&laquo;</a>:
 
&laquo;') .
<label>Seite <input type="text" value="' $AktuelleSeite '" name="seite" size="3"
 title="Seitenzahl eingeben und Eingabetaste betätigen"> von ' $AnzahlDatensaetze '</label>.
 ((
$AktuelleSeite 1<$AnzahlDatensaetze ?
  
<a href="?seite=' . ($AktuelleSeite 1) . '">&raquo;</a>:
  
&raquo;') .
'</form>';
?>

</body>
</html>

Kombinierte Formular.- und Blätterfunktion (mysqli())

Daten aus einer Datenbank-Tabelle auf mehreren Seiten aufteilen. Mit den Pfeilsymbolen zur nächsten oder vorherigen Seite wechseln oder durch die Eingabe einer Seitenzahl in das Formularfeld.

Beispielbild

Ein Beispiel für PDO() finden Sie unter: Kombinierte Formular.- und Blätterfunktion

QuelltextKopierenAusblendenZeilen

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
<?php
// Kombinierte Formular.- und Blätterfunktion mysqli()

// Verbindung zur Datenbank aufbauen
$db mysqli_connect("localhost""root""""test");
mysqli_set_charset($db"utf8"); // Zeichensatz UTF-8 setzen

// Anzeige der Datensätze pro Seite
$DatensaetzeSeite 10;

// Anzahl der Datensätze ermitteln
$AnzahlDatensaetze mysqli_num_rows(mysqli_query($db"SELECT `id` FROM `nachrichten` "));

// Die Anzahl der Seiten ermitteln
$AnzahlSeiten ceil($AnzahlDatensaetze $DatensaetzeSeite);

// Die Aktuelle Seite ermitteln
$AktuelleSeite = isset($_GET["seite"]) ? $_GET["seite"] : 1;

// Den Wert überprüfen und ggf. ändern
$AktuelleSeite ctype_digit($AktuelleSeite) ? $AktuelleSeite 1;
$AktuelleSeite $AktuelleSeite < || $AktuelleSeite > $AnzahlSeiten $AktuelleSeite;

// Den Versatz ermitteln
$Versatz $AktuelleSeite $DatensaetzeSeite $DatensaetzeSeite;

// Datensätze auslesen
 
$datensaetze mysqli_query($db"
 SELECT `id`, `autor`, `titel`, `nachricht`, `datum`
  FROM `nachrichten`
  ORDER BY `datum` ASC 
 LIMIT "  $Versatz ", " $DatensaetzeSeite);

// Datensätze ausgeben
foreach ($datensaetze as $datensatz) {
 echo 
'<p>$datensatz['datum'] . <b>$datensatz['titel'] . '</b> ' .
 
$datensatz['autor'] . '<br>$datensatz['nachricht'] . '</p>';
}

// Formular.- und Blätterfunktion
echo '<form name="Form" action="' $_SERVER["SCRIPT_NAME"] . '" method="GET" autocomplete="off">
 ((
$AktuelleSeite 1> ?
 
'<a href="?seite=' . ($AktuelleSeite 1) . '">&laquo;</a>:
 
&laquo;') .
 
<label>Seite <input type="text" value="' $AktuelleSeite '" name="seite" size="3" 
 maxlength="3" title="Seitenzahl eingeben und Eingabetaste betätigen"> von ' $AnzahlSeiten '</label>.
 ((
$AktuelleSeite 1<$AnzahlSeiten ?
 
<a href="?seite=' . ($AktuelleSeite 1) . '">&raquo;</a>:
 
&raquo;') .
 
'</form>';
?>

Verzeichnis-Dateien auf mehreren Seiten aufteilen

Die Verzeichnis-Dateien (Dateiname, Dateigröße und Datum) werden übersichtlich in einer HTML-Tabelle ausgegeben.

QuelltextKopierenAusblendenZeilen

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
<!DOCTYPE html>
<html>
 <head>
  <title>Daten auf mehreren Seiten aufteilen</title>
 </head>
<body>

<?php
/* Verzeichnis-Dateien auf mehreren Seiten aufteilen (PHP5) */

// Anzeige der Einträge pro Seite
$eintraege_seite 5;

// Verzeichnis
$verzeichnis "verzeichnis/";


$daten array_slice(scanDir($verzeichnis), 2);
$ausgabe = array();
foreach (
$daten as $datei) {
 
$ausgabe[] = '<tr>.
 
'<td> ' $datei </td>
 
'<td>number_format((filesize($verzeichnis $datei) / 1024), 2","".") . ' KB</td>.
 
'<td>'  date("d.m.Y"fileMtime($verzeichnis $datei)) .  '</td>.
 
'</tr>';
}

$seitenzahl = ((isset($_GET["seitenzahl"])) ? $_GET["seitenzahl"] : 0);
$nr 0;
echo 
'<p>Seite: ';
for (
$zaehler 0$zaehler < count($ausgabe); $zaehler $zaehler $eintraege_seite) {
 
$nr++;
 echo ((
$zaehler == $seitenzahl) ? <b>$nr '</b>:
 
<a href="?seitenzahl=' $zaehler '">$nr '</a>') .
 
&nbsp;';
}

echo 
'</p><table border="1">
<tr><th>Name</th><th>Größe</th><th>Datum</th></tr>';
for (
$zaehler $seitenzahl$zaehler < ($seitenzahl $eintraege_seite); $zaehler++) {
 if (isset(
$ausgabe[$zaehler])) {
  echo 
$ausgabe[$zaehler];
 }
}
echo 
'</table>';
?>

</body>
</html>

Bilder auf mehreren Seiten aufteilen

QuelltextKopierenAusblendenZeilen

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
75
76
77
78
79
80
<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Bilder auf mehreren Seiten aufteilen</title>

  <style>
  body {
   font-family: Verdana, Arial, Sans-Serif;
  }

  span.akt_seite {
   padding: 2px 5px 2px 5px;
   background-color: #F4F4F4;
   border: Solid 1px #c0c0c0;
   cursor: Default;
  }

  a.link_seite:link, .link_seite:visited {
   padding: 2px 5px 2px 5px;
   background-color: #ECECFF;
   border: Solid 1px #BFBFFF;
   text-decoration: None;
  }

  figure img {
   max-width: 100%;
   height: Auto;
   box-shadow: 1px 1px 5px #888888;
  }
  </style>


 </head>
<body style="text-align: center;">

<?php
/* Bilder auf mehreren Seiten aufteilen (PHP5) */

// Anzeige der Bilder pro Seite
$bilder_seite 3;

// Verzeichnis
$verzeichnis "bilder/";

// Bildtypen
$bildtypen = array(".gif"".png"".jpg", );

// Verzeichnis auslesen
$dateien array_slice(scanDir($verzeichnis), 2);
$ausgabe = [];

foreach (
$dateien as $datei) {
 if (
in_array(substr($datei, -4), $bildtypen)) {
  list(
$breite$hoehe) = getimagesize($verzeichnis $datei);
  
$ausgabe[] = '<img src="' $verzeichnis $datei '" width="' $breite '" height="' $hoehe '">';
 }
}

// Navigation
$seitenzahl = ((isset($_GET["seitenzahl"])) ? $_GET["seitenzahl"] : 0);
$nr 0;
echo 
'<p>Seite: ';
for (
$zaehler 0$zaehler < count($ausgabe); $zaehler $zaehler $bilder_seite) {
 
$nr++;
 echo ((
$zaehler == $seitenzahl) ? <span class="akt_seite">$nr '</span>:
 
<a href="?seitenzahl=' $zaehler '" class="link_seite">$nr '</a>') .
 
' ';
}
echo 
'</p>';

// Bilder anzeigen
for ($zaehler $seitenzahl$zaehler < ($seitenzahl $bilder_seite); $zaehler++) {
 if (isset(
$ausgabe[$zaehler])) {
  echo 
'<figure>$ausgabe[$zaehler] .'</figure>';
 }
}
?>

</body>
</html>

Tipps

Eine MySQL-Tabelle über Links sortieren
Tabellen haben oft den Nachteil das diese nicht vom Benutzer sortiert werden können, dabei ist es eigentlich ganz einfach.
Lokalen Webserver einrichten und verwenden
Um PHP-Scripte auszuführen benötigt man einen Webserver. Um nun nicht jede Datei zum testen erst per FTP auf seinen Webserver zu laden ist es sinnvoll, sich lokal auf dem Rechner einen sog. lokalen Webserver zu installieren.
Suchanfrage an eine Datenbank über AJAX senden und empfangen
Ohne das die Seite neu geladen werden muss, kann man über JavaScript eine Suchanfrage an eine PHP-Datei senden (die dann eine DB-Tabelle ausliest) und die Ergebnisse auf der gleichen Seite ausgibt.
Diese Schlagwörter könnten Sie interessieren:
ASCII MySQL Suchmaschine Mehrfachauswahl Zebra-Tabelle Lokaler Webserver JSON Linkliste AJAX Formulare Veranstaltungsliste Zeitansage Audio-Player Textgestaltung Wecker Berechnungen Blätterfunktion Chatroom localStorage Mauszeiger