phpBuddy

Script Downloads

  • Professionelles Gästebuch mit Admin Panel und Spam Schutz
  • Image Hosting Script mit Thumbnail-Funktion und Passwortschutz
  • File Send Script Privates File Sharing Script mit Email-Benachrichtigung
Sie sind hier: Startseite Formulare verarbeiten (Grundlagen)
Formulare und PHP - Teil 1 (Grundlagen) - Aus der DB lesen und ausgeben
Beitragsseiten
Formulare und PHP - Teil 1 (Grundlagen)
Formulareingaben in DB schreiben
Aus der DB lesen und ausgeben
Fazit und Linkübersicht
Alle Seiten

Daten aus MySQL auslesen und ausgeben

Damit das schreiben in eine DB auch Sinn macht brauchen wir natürlich auch einen Weg die Daten wieder auszugeben. Das ist ungleich einfacher als das hineinschreiben, weil die Eingaben nicht mehr geprüft und aufbereitet werden müssen. Zunächst mal der Code, dann die Erklärung...

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Datensätze aus einer Datenbank auslesen und ausgeben</title>
</head>
 
<body>
<?php
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "traumprojekt";
 
// Verbindung oeffnen und Datenbank ausweahlen
$conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
if ($conID)
{
    mysql_select_db( $db_name, $conID );
}
 
// Anfrage zusammenstellen um die Datensaetze auszulesen
$sql = "SELECT `vorname`, `geschlecht`, `alter`, IF(`fuehrerschein`=0, 'Nein', 'Ja') as fuehrerschein FROM `traumprojekt`";
// Anfrage an die DB schicken und die Rueckmeldung in eine Variable ablegen
$abfrageergebnis = mysql_query( $sql, $conID );
// Ermitteln wie viele Datensaetzen gefunden wurden
$anzahl = mysql_num_rows( $abfrageergebnis );
echo '<p>Es wurden <span class="hinweis">' .$anzahl. '</span> Datensätze gefunden!</p>';
 
// Tabelle erstellen fuer die Ausgabe
echo '<table border="1">';
echo "<tr><th>Vorname</th><th>Geschlecht</th><th>Alter</th><th>Führerschein</th></tr>";
// Ab hier werden die Datensaetze zeilenweise ausgeben (auch fetchen genannt)
while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
{    
    // Jeder Datensatz entspricht einer Tabellenzeile
    echo "<tr>";
    echo "<td>" .htmlspecialchars( $datensatz['vorname'] ). "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['geschlecht'] ). "</td>";
    echo "<td>" .$datensatz['alter']. "</td>";
    echo "<td>" .$datensatz['fuehrerschein']. "</td>";
    echo "</tr>";
}
// Tabelle schliessen
echo "</table>";
 
?>
</body>
</html>

Zuerst wieder das obligatorische verbinden zum Datenbankserver und das auswählen der DB. Dann wird die Anfrage zusammengestellt...

$sql = "SELECT `vorname`, `geschlecht`, `alter`, IF(`fuehrerschein`=0, 'Nein', 'Ja') as fuehrerschein FROM `traumprojekt`";

Für MySQL-Neulinge wird dieses IF vielleicht etwas verwirrend sein. Das muß es aber nicht, weil es ganz einfach zu verstehen ist. Wir erinnern uns an oben, das wir für "Führerschein vorhanden" eine 0 bzw 1 eingetragen haben. Da das aber weniger gut lesbar ist wandeln wir das in etwas um das man auch verstehen kann, nämlich Ja oder Nein. Die Zeile

IF(`fuehrerschein`=0, 'Nein', 'Ja') as fuehrerschein

macht also nichts anderes, als abzufragen ob im Feld "fuehrerschein" eine 1 oder eine 0 steht und liefert uns ein Ja oder Nein. Den Wert können wir in der Variable "fuehrerschein" (MySQL Alias as fuehrerschein) abrufen.
Dieser Weg ist schneller und performanter, weil direkt beim lesen aus der MySQL das 0/1 umgewandelt wird und es so nicht von PHP gemacht werden muß.
Die Anfrage wird an die DB geschickt und das Ergebnis halten wir in der Variable $abfrageergebnis fest. Mit der Zeile

$anzahl = mysql_num_rows( $abfrageergebnis );

ermitteln wir wie viele Zeilen wir aus der DB gelesen haben und geben das in der darauf folgenden Zeile per echo aus. Jetzt erzeugen wir einen Tabellenkopf und lassen uns fein säuberlich alle Datensätze tabellarisch ausgeben. Das geschieht mit...

while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
{    
    // Jeder Datensatz entspricht einer Tabellenzeile
    echo "<tr>";
    echo "<td>" .htmlspecialchars( $datensatz['vorname'] ). "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['geschlecht'] ). "</td>";
    echo "<td>" .$datensatz['alter']. "</td>";
    echo "<td>" .$datensatz['fuehrerschein']. "</td>";
    echo "</tr>";
}

Die Feldnamen aus der DB entsprechen den Array-Schlüssel beim auslesen. (vergleiche mit der Abfrage oben, die identische Feldnamen selektiert hat)
Hier geschieht noch einmal etwas sehr wichtiges! Daten die von Benutzereingaben abstammen und vom Typ String sind (wie z.B. Name und Geschlecht) müssen unschädlich gemacht werden, damit da keine unerwünschten Inhalte, wie etwa HTML-Code oder Javascript, ausgegeben werden. Dafür ist die Funktion htmlspecialchars() gedacht, die bestimmte Zeichen in HTML-Entities umwandelt und dadurch entschärft.
Zu guter Letzt schließen wir die Tabelle und speichern das ganze Script als mysql_lesen.php
Führen wir das Script nun aus sollten wir alle zuvor eingegebenen Datensätze sehen.