Ergebnisse in Tabellenform ausgeben - mysql_num_fields(), mysql_num_rows(), mysql_field_name()
Falls über diesem Text keine PDF-Präsentation zu sehen ist, wurde diese von Ihrem Browser direkt runtergeladen (wenn Sie z.B. mit Safari@Mac surfen). Sie könnnen zum Download auch hier klicken: Direktdownload PDF-Präsentation
Um die Ergebnisse in Tabellenform zu bringen, benötigt man eine Schleife, um die benötigte Anzahl der Tabellenzeilen zu generieren. Wichtige Befehle sind hier (auf Grundlage einer Abfrage wie $ergebnis = mysql_query("SELECT * FROM kunden");):
PHP-Codemysql_num_fields($ergebnis)
Gibt an, wie viel Felder eine Tabelle hat (also “Spalten”).
PHP-Codemysql_num_rows($ergebnis)
Gibt an, wie viele Datensätze eine Tabelle hat (“Zeilen” bzw. “Reihen”).
PHP-Codemysql_field_name($ergebnis, Index)
Gibt den Feldnamen zurück, abhängig vom Indexwert (0 gibt den ersten Feldnamen, 1 den zweiten usw.).
Listing: Datenbankabfrage in Tabellenform ausgeben
PHP-Code<?php require("include/config.inc.php"); // Verbindung zur DB herstellen und testen // mySQL-Abfrage: $abfrage = "SELECT * FROM kunden"; $ergebnis = mysql_query($abfrage); // Anzahl der Datensätze und Anzahl der Datenfelder bestimmen: $anzahl_datensaetze = mysql_num_rows($ergebnis); $anzahl_felder = mysql_num_fields($ergebnis); // Tabelle beginnen echo "<table border = '1'>"; // Erste Zeile echo "<tr>"; // Schleife 1: Für jedes Feld wird eine th-Zelle erzeugt und der Name eingesetzt: for ($n = 0; $n < $anzahl_felder; $n++) { $feldname = mysql_field_name($ergebnis, $n); echo "<th>" . $feldname . "</th>\n"; } echo "</tr>"; // Schleife 2: Für jeden Datensatz wird ein foreach durchgeführt: while ($datensatz = mysql_fetch_assoc($ergebnis)) { echo "<tr>"; // Schleife 2-1: Für jeden Wert des Arrays wird eine Zelle erzeugt und der Wert des Arrays ausgegeben: foreach ($datensatz as $key => $value) { echo "<td>" . $value . "</td>\n"; } echo "</tr>\n"; } echo "</table>"; mysql_close($link); // Verbindung zur Datenbank beenden ?>
Erläuterungen zum Listing:
- Schleife 1: Zählt von $n=0 bis $n=$anzahl_felder-1 und gibt jedes Mal mit
mysql_field_name($ergebnis, $n)den Namen des Feldes aus (Feld 0, Feld 1 …). Wird jeweils in eine th-Zelle gepackt. - Schleife 2: Zählt mit
whiledie Anzahl der Datensätze durch und packt jeweils übermysql_fetch_assoc($ergebnis)den aktuellen Datensatz in das Array$datensatz[$key]. - Schleife 2-1: Das Array
$datensatzwird mit einer foreach-Schleife durchlaufen und jeweils der Wert ausgegeben. Jede Ausgabe wird von einer Tabellenzelle umhüllt.
