Formulare und PHP (Grundlagen)

Vorwort

Da immer wieder Fragen auftauchen wie man Formulardaten in eine Datenbank schreiben und später wieder auslesen kann habe ich mich dazu entschlossen dieses kleine Anfängertutorial zu schreiben. Damit ein Benutzer mit einer Seite interagieren kann ist es nötig das eine Eingabemöglichkeit geschaffen wird: ein Formular. So ziemlich jede Webseite hat heutzutage mindestens ein Formular; sei es ein Gästebuch, Newsletter, Kontaktformular oder etwas anderes. Das beste Formular nutzt aber nichts, wenn man die eingegebenen Daten nicht verarbeiten kann und genau hier hilft uns eine Scriptsprache wie z.B. PHP. Wenn die Daten dauerhaft gespeichert werden müssen bietet sich eine Datenbank wie etwa MySQL an.

In diesem Tutorial schauen wir uns zunächst einmal an mit welchen Formular-Elemente wir es zu tun bekommen können. Wie wir die Eingaben auswerten, verarbeiten, speichern und schließlich wieder ausgeben können. Das hier gezeigt soll nur als Grundlage dienen und ist keinesfalls als komplett anzusehen, von daher ist es auch nicht 1:1 in der Praxis anwendbar, weil ich aus Platzgründen sehr wichtige Dinge wie Validierung der Eingaben weggelassen habe!

Auf Submit geklickt und jetzt?

Schauen wir uns mal ein Formular an das die wichtigsten Elemente beinhaltet.

<!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>Formular-Elemente</title>
</head>
<body>
<hr />
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formular" id="formular">
Textfeld: <input type="text" name="textfeld" id="textfeld" value="Das ist ein Textfeld" /><br />
Textarea: <textarea name="textarea" id="textarea" cols="30" rows="2">Das ist ein Textbereich</textarea><br />
Checkbox: <input type="checkbox" name="checkbox" id="checkbox" value="Das ist eine Checkbox" /><br />
Radiobutton: <input type="radio" name="radio" id="radiobutton" value="Das ist ein Radiobutton" /><br />
Radiobutton-Gruppe: <input type="radio" name="radiobuttongruppe" id="radiobuttongruppe_1" value="ja" /> Ja <input type="radio" name="radiobuttongruppe" id="radiobuttongruppe_2" value="nein" />Nein<br />
Selectbox: <select name="selectbox" id="selectbox"><option>Das ist der Wert einer Selectbox</option></select><br />
SubmitButton: <input type="submit" name="submitbutton" id="submitbutton" value="Senden" />
</form>
</body>
</html>

Wer hier schon Probleme hat zu verstehen was er vor sich sieht, der sollte an dieser Stelle abbrechen und erst einmal HTML Grundlagen pauken!
Die für uns wichtigen Informationen stecken im name-Attribut. Hierfür sollten unbedingt aussagekräftige Ausdrücke benutzt werden, ohne Leerzeichen, Umlaute oder anführende Zahlen. Dieses name-Attribut stellt nämlich nach abschicken des Formulars ein Array-Schlüssel dar mit dem wir in PHP weiterarbeiten werden.

Nachdem man „Submit“ gedrückt hat, kommt bei PHP ein Superglobales Array an das sich $_POST nennt – natürlich nur, wenn die method-Eigenschaft im Form-Tag auch „post“ war. In diesem $_POST Array befinden sich nun verschiedene Schlüssel und zwar für jedes Form-Element einer, das den Namen des name-Attributs trägt. So wird aus dem Form-Element

<input type="text" name="textfeld" id="textfeld" />

nach abschicken des Formulars für PHP ein

$_POST['textfeld']

Hier wird auch deutlich wieso ein name-Attribut wie etwa „2. Vorname“ fatal wäre, denn daraus würde in PHP ein $_POST[‚2. Vorname‘] werden, wodurch Fehler vorprogrammiert sind!

Am besten läßt man sich einmal anzeigen was nach abschicken eines Formulars bei PHP ankommt, dazu benutzen wir dieses Script (abspeichern als z.B. formelemente.php)

<?php
if (isset( $_POST['submitbutton'] ))
{
    echo "<pre>" .print_r( $_POST, true ). "</pre>";
}
?>
<!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>Formular-Elemente</title>
</head>
<body>
<hr />
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formular" id="formular">
Textfeld: <input type="text" name="textfeld" id="textfeld" value="Das ist ein Textfeld" /><br />
Textarea: <textarea name="textarea" id="textarea" cols="30" rows="2">Das ist ein Textbereich</textarea><br />
Checkbox: <input type="checkbox" name="checkbox" id="checkbox" value="Das ist eine Checkbox" /><br />
Radiobutton: <input type="radio" name="radio" id="radiobutton" value="Das ist ein Radiobutton" /><br />
Radiobutton-Gruppe: <input type="radio" name="radiobuttongruppe" id="radiobuttongruppe_1" value="ja" /> Ja <input type="radio" name="radiobuttongruppe" id="radiobuttongruppe_2" value="nein" />Nein<br />
Selectbox: <select name="selectbox" id="selectbox"><option>Das ist der Wert einer Selectbox</option></select><br />
SubmitButton: <input type="submit" name="submitbutton" id="submitbutton" value="Senden" />
</form>
</body>
</html>

Wer dieses Formular so wie es ist abschickt wird etwas seltsames bemerken. Obwohl es sich hier um 7 Formular-Elemente handelt kommen bei PHP nur 4 (inklusive Submitbutton) an. Hoppla, ist das Formular fehlerhaft? Keineswegs! Manche Elemente haben die Eigenart nicht übermittelt zu werden, wenn sie nicht ausgefüllt wurden. Das mag sich im ersten Moment schlecht anhören, kann man aber super für sich benutzen. Wie das geht zeige ich weiter unten, wenn wir uns daran machen in die DB zu schreiben.

Inhalte werden durch das value-Attribut vorgegeben, bzw bekommt man durch die Benutzereingaben. Elemente wie Checkbox oder Radiobutton übermitteln ein „on“ wenn sie angeklickt wurden und kein value-Attribut gesetzt wurde. Das ist wichtig zu wissen damit wir auswerten können welches Element in welchem Zustand übermittelt wurde.
Ein weiteres sehr wichtiges Formular-Element ist das hidden-Field (verstecktes Feld). Es verhält sich exakt wie ein Textfeld, ausser das es einen Wert vorgegeben bekommt und nicht sichtbar auf der Seite ist. Das braucht man z.B. um ID’s oder andere Werte unsichtbar zu übergeben.

Einfach ein wenig mit dem Script von oben testen, mehrfach absenden und dabei die Werte des Formulars ändern, dabei darauf achten was PHP ausgibt.

So, wenn die Zusammenhänge zwischen name-Attribut und PHP so weit verstanden wurde geht’s weiter mit…

Formulareingaben in eine MySQL DB schreiben

Um Daten in eine Datenbank zu schreiben brauchen wir natürlich erst einmal was..? Genau, eine Datenbank! Wie man sowas anlegt sollte jeder wissen der mit PHP etwas zu tun hat. In dieser DB brauchen wir eine Tabelle in die wir unsere Daten schreiben. Dazu einfach diesen Code

CREATE TABLE `traumprojekt` (
`id` INT( 7 ) NOT NULL AUTO_INCREMENT ,
`vorname` VARCHAR( 50 ) NOT NULL ,
`geschlecht` VARCHAR( 20 ) NOT NULL ,
`alter` TINYINT( 3 ) UNSIGNED NOT NULL ,
`fuehrerschein` tinyint(1) NOT NULL ,
PRIMARY KEY  (`id`)
) ENGINE = MYISAM

in phpMyAdmin (in der DB) ausführen.
Wie man sieht ist das nur eine sehr kleine Tabelle, weil die ja auch nur zu Testzwecken gebraucht wird. Passend zur DB brauchen wir natürlich auch ein normales HTML-Formular, das wie folgt aussieht:

<!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>Formularinhalt in eine Datenbank schreiben</title>
</head>
 
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formular" id="formular">
Vorname: <input type="text" name="vorname" id="vorname" /><br />
Geschlecht: <input type="radio" name="geschlecht" id="geschlecht_1" value="männlich" checked="checked" />Männchen <input type="radio" name="geschlecht" id="geschlecht_2" value="weiblich" />Weibchen<br />
Alter: <select name="alter" id="alter"><?php for ($i=1; $i<121; $i++) { echo "<option>{$i}</option>"; } ?></select><br />
Führerschein: <input type="checkbox" name="fuehrerschein" id="fuehrerschein" /><br />
<input type="submit" name="eintragen" id="eintragen" value="Abschicken" />
</body>
</html>

Diese Datei speichern wir als mysql_schreiben.php ab. Bisher ist alles schön überschaubar und hoffentlich auch verständlich. Bevor wir zum PHP-Teil kommen sollte jeder mal 1 Minute auf den Formular-Quelltext schauen und versuchen festzustellen welche Variablen wir beim abschicken in PHP erwarten dürfen.

Hier nun der PHP-Teil

<?php
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "traumprojekt";
 
if (isset( $_POST['eintragen'] ))
{
    // Maskierende Slashes aus POST entfernen
    $_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
 
    // Inhalte der Felder aus POST holen
    $vorname = $_POST['vorname'];
    $geschlecht = $_POST['geschlecht'];
    $alter = (int) $_POST['alter'];
    $fuehrerschein = isset( $_POST['fuehrerschein'] ) ? 1 : 0;
 
    /* ************************************************************************************************ */
    /* *** Hier sollten und MUESSEN die Benutzereingaben geprueft werden um Schadcode abzufangen!!! *** */
    /* ************************************************************************************************ */
 
    // Sind alle Eingaben durch die Validierung gekommen werden sie in die DB geschrieben
    // 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 der an die DB geschickt werden soll
    $sql = "INSERT INTO `traumprojekt`
                (`vorname`, `geschlecht`, `alter`, `fuehrerschein`)
            VALUES(
                '" .mysql_real_escape_string( $vorname ). "',
                '" .mysql_real_escape_string( $geschlecht ). "',
                " .$alter. ",
                " .$fuehrerschein. "
                )";
    // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle
    mysql_query( $sql );
    // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde
    if (mysql_affected_rows() == 1)
    {
        echo "<h3>Der Datensatz wurde hinzugefügt!</h3>";
        // Hier kann weiterer Code stehen der ausgefuehrt werden soll
        // wenn ein Eintrag erfolgreich war. z.B. Email an den Admin schicken
        // der ueber den neuen Eintrag informiert
    }
    else
    {
        echo '<h3>Der Datensatz konnte <span class="hinweis">nicht</span> hinzugefügt werden!</h3>';
        // Hier koennen Massnahmen ergriffen werden die ueber den Misserfolg informieren
        // wie z.B. den Benutzer darueber zu informieren, dem Admin eine Mail schicken
        // damit er sich um den Fehler kuemmern kann, etc pp
    }
}
?>

Um überhaupt zu wissen ob PHP aktiv werden muß fragen wir erst mal ab ob ein Formular abgeschickt wurde. Das geschieht mit der Zeile

if (isset( $_POST['eintragen'] ))

Hier wird mithilfe von isset() nur geschaut, ob überhaupt eine Variable gesetzt wurde. Das ist dann der Fall wenn der Abschicken-Knopf gedrückt wurde. Als nächstes werden maskierende Slashes aus dem $_POST Array entfernt. Je nach Konfiguration des Servers kann es sein das gefährliche Zeichen wie etwa ‚ oder “ durch ein Backslash maskiert werden um sie unschädlich zu machen. So wird aus ‚ dann \‘ und aus “ wird \“
Danach laden wir die Inhalte aus dem $_POST Array um in normale Variablen um damit weiterzuarbeiten. 2 Besonderheiten fallen hier schon auf, zum einen…

$alter = (int) $_POST['alter'];

Das (int) stellt sicher das für das Alter nur ein numerischer Wert in die DB gelangt und zum anderen…

$fuehrerschein = isset( $_POST['fuehrerschein'] ) ? 1 : 0;

Hier findet das statt was ich oben angedeutet habe. Um zu wissen ob jemand einen Führerschein hat haben wir eine Checkbox gewählt. Ist ein Häkchen drin (für Ja) ist ein Wert gesetzt, nämlich „on“, legen wir in unserer Variable eine 1 ab. Existiert die Variable $_POST[‚fuehrerschein‘] aber gar nicht wissen wir, daß sie im Formular gar nicht angeklickt wurde. In dem Fall bekommt unsere Variable die 0 zugewiesen.

Normalerweise würde hier jetzt eine gründliche, mit Betonung auf gründlich!, Überprüfung der Benutzereingaben stattfinden um Injections und Schadcode abzufangen. Aus Platzgründen spare ich mir das hier aber. Wer wissen möchte wie man Eingaben prüft soll einfach mal einige Tutorial zu anderen Themen durchgehen, weil es dort oft demonstriert wird.

Weiter geht es mit dem Verbindungsaufbau zur DB und dem zusammenstellen der Anfrage bei der in die DB geschrieben wird.

    // Anfrage zusammenstellen der an die DB geschickt werden soll
    $sql = "INSERT INTO `traumprojekt`
                (`vorname`, `geschlecht`, `alter`, `fuehrerschein`)
            VALUES(
                '" .mysql_real_escape_string( $vorname ). "',
                '" .mysql_real_escape_string( $geschlecht ). "',
                " .$alter. ",
                " .$fuehrerschein. "
                )";
 

Wie wir hier sehen, werden die Text Eingaben nicht einfach so in die DB geschrieben, sondern sie werden escaped. Das ist ultrawichtig um etwaige Angriffe auf die DB abzufangen!! (Stichwort: SQL-Injection)
Die Werte für $alter und $fuehrerschein sind numerisch und können keinen Schaden anrichten, von daher brauchen sie auch nicht escaped zu werden.
Ich kann nicht genug betonen wie wichtig es ist Eingaben mit mysql_real_escape_string() unschädlich zu machen. Im Anschluß an das Tutorial verlinke ich auf alle verwendeten PHP Funktionen. Jeder sollte sich die Zeit nehmen diese ausführlich zu lesen und zu verstehen.

Ist die Anfrage vorbereitet wird sie mit mysql_query() an die DB gesendet. Ob das Eintragen wirklich funktioniert hat stellen wir fest mit…

if (mysql_affected_rows() == 1)

Die Funktion mysql_affected_rows() liefert eine Zahl zurück wieviele Datensätze von der letzten Aktion (Insert, Delete oder Update) betroffen waren. So kann man sicherstellen das auch tatsächlich etwas in der DB steht und dementsprechend darauf reagieren.

Der vollständigkeit halber noch einmal der komplette Code der mysql_schreiben.php

<?php
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "traumprojekt";
 
if (isset( $_POST['eintragen'] ))
{
    // Maskierende Slashes aus POST entfernen
    $_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
 
    // Inhalte der Felder aus POST holen
    $vorname = $_POST['vorname'];
    $geschlecht = $_POST['geschlecht'];
    $alter = (int) $_POST['alter'];
    $fuehrerschein = isset( $_POST['fuehrerschein'] ) ? 1 : 0;
 
    /* ************************************************************************************************ */
    /* *** Hier sollten und MUESSEN die Benutzereingaben geprueft werden um Schadcode abzufangen!!! *** */
    /* ************************************************************************************************ */
 
    // Sind alle Eingaben durch die Validierung gekommen werden sie in die DB geschrieben
    // 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 der an die DB geschickt werden soll
    $sql = "INSERT INTO `traumprojekt`
                (`vorname`, `geschlecht`, `alter`, `fuehrerschein`)
            VALUES(
                '" .mysql_real_escape_string( $vorname ). "',
                '" .mysql_real_escape_string( $geschlecht ). "',
                " .$alter. ",
                " .$fuehrerschein. "
                )";
    // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle
    mysql_query( $sql );
    // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde
    if (mysql_affected_rows() == 1)
    {
        echo "<h3>Der Datensatz wurde hinzugefügt!</h3>";
        // Hier kann weiterer Code stehen der ausgefuehrt werden soll
        // wenn ein Eintrag erfolgreich war. z.B. Email an den Admin schicken
        // der ueber den neuen Eintrag informiert
    }
    else
    {
        echo '<h3>Der Datensatz konnte <span class="hinweis">nicht</span> hinzugefügt werden!</h3>';
        // Hier koennen Massnahmen ergriffen werden die ueber den Misserfolg informieren
        // wie z.B. den Benutzer darueber zu informieren, dem Admin eine Mail schicken
        // damit er sich um den Fehler kuemmern kann, etc pp
    }
}
?>
<!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>Formularinhalt in eine Datenbank schreiben</title>
</head>
 
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formular" id="formular">
Vorname: <input type="text" name="vorname" id="vorname" /><br />
Geschlecht: <input type="radio" name="geschlecht" id="geschlecht_1" value="männlich" checked="checked" />Männchen <input type="radio" name="geschlecht" id="geschlecht_2" value="weiblich" />Weibchen<br />
Alter: <select name="alter" id="alter"><?php for ($i=1; $i<121; $i++) { echo "<option>{$i}</option>"; } ?></select><br />
Führerschein: <input type="checkbox" name="fuehrerschein" id="fuehrerschein" /><br />
<input type="submit" name="eintragen" id="eintragen" value="Abschicken" />
</body>
</html>
 

Das war’s! So einfach schreibt man Daten aus einem Formular in eine Datenbank. Am besten fügt Ihr mal einige Datensätze hinzu, damit wir im nächsten Schritt auch was zum auslesen haben.

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.

Fazit

Mit wenig Aufwand kann man primitive Datenbank-Anwendungen schreiben. An aller erster Stelle sollte dabei das Thema Sicherheit stehen! Nützliche Informationen und Tipps findet man im Sticky Thread in der Traum Dynamik. Es empfiehlt sich den Umgang mit Formularen auf einem lokalen Testserver zu üben, da jeder der sich auch nur halbwegs PHP Programmierer schimpfen darf den Umgang damit im Schlaf beherrschen muß.

Links

Zum Abschluß gibt es noch Links zu den verwendeten PHP Funktionen. Es ist nicht nur eine Empfehlung, sondern Programmierer Pflicht, zu wissen wie die einzelnen Funktionen arbeiten und wie man sie am effektivsten einsetzt!

Christof Servit Administrator
Inhaber und Entwickler bei servit.biz

Ich bin spezialisiert auf die Bereiche Webentwicklung, WordPress und .net Applikationen.
Dabei spielt es keine Rolle ob Frontend oder Backend (Full-Stack). Ich unterstütze meine Kunden bei der Enwicklung, Beratung und Einrichtung in allen Bereichen.

follow me
Entwickler gesucht? Ich kann Ihnen helfen.
Ich bin spezialisiert auf die Bereiche Webentwicklung, WordPress und .net Applikationen.
Dabei spielt es keine Rolle ob Frontend oder Backend (Full-Stack).
Jetzt kontaktieren

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Scroll to Top