Datenbanken
MySQL

Informatik Johann Penon

Daten in einer Liste ausgeben (select *)



Bei nicht zu großen Datenmengen ist es oft erwünscht alle Daten einer Tabelle in einer Liste auszugeben. Dies ist eine einfache Aufgabe, die keine Benutzereingaben erfordert. Der grundlegende Aufbau eines Skripts zur Ausgabe aller Daten wird im folgenden am Beispiel einer Kundenliste gezeigt.

Die folgenden Erklärungen gelten für das Skript: kundenliste_ausgeben.php. Wenn Sie das Skript verstehen, dann können Sie die folgenden Beschreibungen ignorieren.

Damit die Daten aus der Datenbank ausgelesen werden können, muss zunächst eine Verbindung zur Datenbank hergestellt werden.

Wenn die Verbindung vorhanden ist, wird mit dem SQL-Befehl "select" der Inhalt der Tabelle ausgelesen:


$sqlstatement="SELECT * FROM kunden ORDER BY kunr;";
$result=mysql_query($sqlstatement);

Als Ergebnis wird ein Zeiger (hier: $result) auf eine Ergebnisliste zurückgegeben. Wenn diese Liste Daten enthält, dann wird zunächst eine Tabelle mit dem entsprechenden Tabellenkopf aufgebaut. Beispiel:

if ($result)
{
   print "<table border=\"1\" cellspacing=\"2\" "."cellpadding=\"5\" WIDTH=\"100\%\" >\n";

   print "<tr><th>Kundennr</th><th>Name</th><th>Vorname</th></tr>\n";
}

Dabei werden alle HTML-Statements durch den PHP-Befehl "print" erzeugt. Wichtig ist dabei, dass Sonderzeichen, z.B. Anführungszeichen durch ein vorgestelltes Backslash \ auskommentiert werden. Durch das Auskommentieren wird die ursprüngliche Bedeutung der Sonderzeichen im Print-Befehl aufgehoben.

Die Ausgabe der Ergebnisliste erfolgt in einer Schleife:


while ($dataset = mysql_fetch_array($result))
 {
  print "<tr>";
  print "<td>".$dataset['kunr']."</td>";
  print "<td>".$dataset['kuname']."</td>";
  print "<td>".$dataset['kuvorname']."&nbsp;"."</td>";
  print "</tr>\n";
}
 

Dies ist eine einfache Variante, die mit wenigen Befehlen auskommt. Der wichtigste Befehl ist der Schleifenkopf:

while ($dataset = mysql_fetch_array($result))

Die Funktion mysql_fetch_array überführt die Ergebnisliste in ein assoziatives Array (hier: dataset). Während eines Schleifendurchlaufs werden nun die jeweiligen Werte aller Spalten ausgegeben. Hier zeigt sich der Vorteil des assoziativen Arrays: innerhalb des Array kann mit Feldnamen auf die einzelnen Array-Elemente zugegriffen werden (hier z.B.: $dataset['kunr']). Nebenbei müssen auch die für den Tabellenaufbau notwendigen HTML-Statements ausgegeben werden. Die Punkte zwischen den einzelnen Sprachelementen im Print-Befehl sorgen dafür, dass alle Elemente als ein zusammengesetzter String ausgegeben werden. Die Ausgabe eines Leerzeichens (&nbsp;) sorgt dafür, dass die Tabelle vollständig gezeichnet wird, wenn dieses Feld leer ist.

Als Service kann jetzt noch die Anzahl der gefundenen Datensätze ausgeben werden. Mit dem Befehl mysql_num_rows kann dabei die Anzahl der Zeilen und damit der Daten abgefragt werden.


$count = mysql_num_rows($result);
print "<tr><td colspan = \"3\">";
print "Es wurden $count Datensätze gefunden.";
print "</td></tr>\n";
print "</table>\n";
 

Jetzt muss nur noch die Tabelle mit entsprechenden HTML-Statements fertig gestellt werden.

zum Seitenanfang springen

zum Seitenanfang springen