Kombinierte Formular.- und Blätterfunktion

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

Mit den Pfeil-Symbolen (◄ ►) kann man zur nächsten oder vorherigen Seite wechseln oder einfach direkt durch die Eingabe einer Seitenzahl in das Formularfeld.

Anwendungsbeispiel

[Bildschirmfoto] 
Kombinierte Formular.- und Blätterfunktion

Dieses Script ist ein Teil der Anleitung: Erster Eintrag in eine MySQL-Datenbank mit PHP. Ein Beispiel für mysqli() finden Sie unter: Daten 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
81
82
83
84
<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Nachrichten</title>

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

  a:link, a:visited {
   color: Royalblue;
   text-decoration: None;
  }
  </style>


 </head>
<body>

<h3>Nachrichten</h3>

<?php
// Verbindung zur Datenbank aufbauen.
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8''root''');

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

// Anzahl der Datensätze ermitteln
$AnzahlDatensaetze $db->query("SELECT COUNT(*) FROM `nachrichten`")->fetchColumn(0);

// 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
$select $db->prepare("SELECT `titel`, `autor`, `nachricht`, `datum`
                                  FROM `nachrichten`
                                  ORDER BY `datum` DESC
                                  LIMIT :versatz, :dseite");
$select->bindValue(':versatz'$VersatzPDO::PARAM_INT);
$select->bindValue(':dseite'$DatensaetzeSeitePDO::PARAM_INT);
$select->execute();
$nachrichten $select->fetchAll(PDO::FETCH_OBJ);

// Ausgabe über eine Foreach-Schleife
if ($AnzahlDatensaetze > 0) {
 foreach (
$nachrichten as $nachricht) {
  
sscanf($nachricht->datum"%4s-%2s-%2s"$jahr$monat$tag);
  echo 
'<p><small>.  $tag '.' $monat '.' $jahr .
   
'</small> - <b>$nachricht->titel '</b><br>.
   
' Autor: <em>$nachricht->autor '</em><br>.
   
nl2br($nachricht->nachricht) . '</p>';
 }

 
// Formular.- und Blätterfunktion
 
echo '<form action="' $_SERVER["SCRIPT_NAME"] . '" method="GET" autocomplete="off">.
  ((
$AktuelleSeite 1> ?
  
'<a href="?seite=' . ($AktuelleSeite 1) . '">&#9668;</a>:
  
&#9668;') .
 
<label>Seite <input type="text" value="' $AktuelleSeite '" name="seite" size="3"
  title="Seitenzahl eingeben und Eingabetaste betätigen"> von ' $AnzahlSeiten '</label>.
  ((
$AktuelleSeite 1<$AnzahlSeiten ?
   
<a href="?seite=' . ($AktuelleSeite 1) . '">&#9658;</a>:
   
&#9658;') .
 
'</form>';
}
else {
 echo 
'<p>Keine Nachrichten vorhanden.</p>';
}
?>

</body>
</html>

DB-Tabelle

Folgende DB-Tabelle wurde im Anwendungsbeispiel verwendet:

CREATE TABLE `nachrichten` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titel` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
  `autor` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `nachricht` text COLLATE utf8_unicode_ci NOT NULL,
  `datum` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `nachrichten` (`id`, `titel`, `autor`, `nachricht`, `datum`) VALUES
(1,	'Sprüche 1',	'Werner',	'Stur lächeln und winken, Männer!',	'2016-07-01'),
(2,	'Yeti gefunden',	'Jörg',	'Gestern in den Morgenstunden sah Reinhold M. einen ...',	'2016-07-04'),
(3,	'Eine Scheibe',	'Hans',	'Die Erde ist eine Scheibe Käse, hier der Beweis ...',	'2016-07-02'),
(4,	'Wasser und Balken',	'Stefan',	'Wasser hat keine Balken. Wirklich! ...',	'2016-07-09');

Voraussetzung

PHP 5.6+, MySQL/MariaDB - Datenbank

Tipps

Fehler 404 mit .htaccess abfangen
Eine Website wird öfters umgebaut, Seiten kommen hinzu, andere Seiten werden entfernt oder bekommen eine neue Adresse. Eine selbst gestaltete Fehler-Weiterleitungsseite, leitet den Besucher sicher zum Angebot der Webseite.
Artikel über Checkboxen auswählen
Hier können Artikel (Bilder) ausgewählt werden die bestimmte Kriterien der Checkboxen erfüllen. Die Daten werden in einer CSV-Datei gespeichert und können individuell angepasst werden.
Mit PHP schreiben und lesen
Hier möchte ich an Beispielen zeigen, wie eine .txt-Datei mit PHP erstellt wird und wie diese ausgelesen werden kann.
Diese Schlagwörter könnten Sie interessieren:
Operatoren Wecker Seitenformatierung Sicherheit Zeitbalken Zeichnen Silbentrennung Zebra-Tabelle Zeichenkodierung MySQL Sitemaps-Protokoll AJAX Zeitansage CSS-Counter Mauszeiger Textgestaltung Gästebuch Favicon Zugriffsrechte Lokaler Webserver