www.PHP-Kurs.com

PHP lernen für Einsteiger
und Fortgeschrittene

PHP-Tutorial mit Videos

Sie befinden sich: Startseite » MySQL Tutorial - Datenbank unter PHP » Zusammenführung: Datenbankprogramm in PHP » Formular vorbereiten für neuen Datensatz

Formular erstellen für Dateneingabe

Wir werden ein sehr einfaches Formular ohne Überprüfung der Daten erstellen. Hier wird man später deutlich noch Absicherungen gegen unerwünschte Daten machen. Für das Verständnis ist hier die grundlegende Form eines Formulars von Vorteil.

Auch hier kommt reines HTML zum Einsatz!

<form action="" method="post">
    <label>Vorname: 
        <input type="text" name="vorname" id="vorname">
    </label>
    <label>Nachname: 
        <input type="text" name="nachname" id="nachname">
    </label>
    <label>Anmerkungen: 
        <textarea name="anmerkungen" id="anmerkungen"></textarea>
    </label>
    <input type="submit" value="speichern">
</form>

Bei dem HTML-Befehl <form wird durch das leere Attribut action="" die gleiche Seite im Browser aufgerufen und die Daten werden im Header über post (method="post") übergeben.

Der HTML-Befehl <label> bewirkt, dass der Cursor in das entsprechende Eingabefeld springt, auch wenn nur die Beschriftung angeklickt wird. Das ist für die Nutzerfreundlichkeit wichtig – der Begriff Usability kommt hier zum Zuge.

Da es Möglichkeiten gibt, dass das Formular ohne das Anklicken des Submit-Buttons abgesendet wird, erstellen wir noch ein zusätzliches verstecktes Feld mit der aktuellen Uhrzeit. Dieses bekommt den Namen aktion – in Deutsch geschrieben um Verwechslungen mit dem Attribut action von dem HTML-Befehl <form> zu vermeiden.

    <input type="hidden" name="aktion" value="speichern">
    <input type="submit" value="speichern">
</form>

Jetzt können wir am Anfang unseres PHP-Programmes überprüfen, ob eine Eingabe mit Absenden über das Formular erfolgt ist.

Überprüfen, ob Formulareingaben vorliegen

Nachdem wir das Formular am Ende unseres Programmcodes platziert haben, müssen wir ganz am Anfang abfragen, ob ein Absenden des Formulars vorliegt. Das machen wird deshalb am Anfang, damit die Daten gleich in die Datenbank geschrieben werden können und danach über bereits bestehende Ausgaberoutine ausgegeben werden.

Wir haben ein unsichtbares Feld mit dem Attribut name="aktion" und dem Wert „speichern“.

Diesen gesetzten Wert können wir abfragen. Vorteil ist von diesem unsichtbaren Feld, dass wir auch leere Felder zulassen können wie beispielsweise den Vornamen.

if (isset($_POST['aktion']) and $_POST['aktion']=='speichern') {
}

Innerhalb der IF-Bedingung können wir nun die einzelnen Inhalte, die in dem Array $_POST stecken auswerten und Variablen zuweisen. Natürlich können wir hier die übergebenen Daten auch entsprechenden vorbereiten. Leerzeichen, die versehentlich am Anfang oder Ende eingegeben wurden, können beseitigt werden.

if (isset($_POST['aktion']) and $_POST['aktion']=='speichern') {
    $vorname = "";
    if (isset($_POST['vorname'])) {
        $vorname = trim($_POST['vorname']);
    }
}

Es wird im ersten Schritt eine leere Variable für jedes Feld erstellt. Im obigen Beispiel $vorname = "";

Dieses Vorgehen hat den Vorteil, dass wir keine Fehlermeldung wegen einer nicht gesetzte Variablen erhalten. Die Variablen werden nur gesetzt, wenn vom Nutzer im Formular im entsprechenden Feld eine Eingabe gemacht wurde. Es kann nun sein, dass der Nachname ausgefüllt wurde, aber der Vorname nicht (weil nicht bekannt). Trotzdem wollen wir das Speichern in der Datenbank zulassen. Später können wir auch noch Felder bestimmen, die Pflichtfelder sind (beispielsweise den Nachnamen). Jetzt geht es erst einmal um das Prinzip, wie die Vorgehensweise beim Speichern in die Datenbank ist.

Wir erstellen für alle Felder die entsprechenden Variablen und füllen diese:

<?php
if (isset($_POST['aktion']) and $_POST['aktion']=='speichern') {
    $vorname = "";
    if (isset($_POST['vorname'])) {
        $vorname = trim($_POST['vorname']);
    }
    $nachname = "";
    if (isset($_POST['nachname'])) {
        $nachname = trim($_POST['nachname']);
    }
    $anmerkungen = "";
    if (isset($_POST['anmerkungen'])) {
        $anmerkungen = trim($_POST['anmerkungen']);
    }
    $erstellt = date("Y-m-d H:i:s");
}
?>

Das Erstellungsdatum können wir über die MySQL-Anweisung NOW() erstellen lassen oder in PHP über date("Y-m-d H:i:s"). Unten werden wir aus didaktischen Gründen NOW() verwenden. Die durch PHP erstellte Variable $erstellt wird dann auch klar, wie man diese verwenden könnte.

Oben versteckt sich noch ein kleiner Fehler. Wurden nur Leerzeichen in ein Formularfeld eingetragen, gibt es ein Problem. Einfach einmal probieren!

Daher wird das Speichern in eine weitere if-Bedingung gepackt:

    if ( $vorname != '' or $nachname != '' or $anmerkung != '' )
    {
        // speichern
    }

Jetzt kommen wir wieder zu den typischen 4 Schritten, die im nächsten Kapitel beschrieben sind:

  1. SQL-Anweisung vorbereiten
  2. Die gewünschten Felder an die SQL-Anweisung binden
  3. Die SQL-Anweisung ausführen
  4. die gewünschten Variablen für die Rückgabe an die SQL-Anweisung binden

kompletter Quellcode, der in diesem Kapitel entstanden ist:

<?php
require 'inc/db.php';
if (isset($_POST['aktion']) and $_POST['aktion']=='speichern') {
    $vorname = "";
    if (isset($_POST['vorname'])) {
        $vorname = trim($_POST['vorname']);
    }
    $nachname = "";
    if (isset($_POST['nachname'])) {
        $nachname = trim($_POST['nachname']);
    }
    $anmerkungen = "";
    if (isset($_POST['anmerkungen'])) {
        $anmerkungen = trim($_POST['anmerkungen']);
    }
    $erstellt = date("Y-m-d H:i:s");
    if ( $vorname != '' or $nachname != '' or $anmerkung != '' )
    {
        // speichern
    }	
}
$daten = array();
if ($erg = $db->query("SELECT * FROM kontakte")) {
    if ($erg->num_rows) {
        while($datensatz = $erg->fetch_object()) {
            $daten[] = $datensatz;
        }
        $erg->free();
    }	
}
if (!count($daten)) {
    echo "<p>Es liegen keine Daten vor :(</p>";
} else {
?>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Vorname</th>
                <th>Nachname</th>
                <th>Anmerkungen</th>
                <th>erstellt</th>
            </tr>
        </thead>
        <tbody>
            <?php
            foreach ($daten as $inhalt) {
            ?>
                <tr>
                    <td><?php echo $inhalt->id; ?></td>
                    <td><?php echo $inhalt->vorname; ?></td>
                    <td><?php echo $inhalt->nachname; ?></td>
                    <td><?php echo $inhalt->anmerkungen; ?></td>
                    <td><?php echo $inhalt->erstellt; ?></td>
                </tr>
            <?php
            }
            ?>
        </tbody>
    </table>
<?php	
}
?>

<form action="" method="post">
    <label>Vorname: 
        <input type="text" name="vorname" id="vorname">
    </label>
    <label>Nachname: 
        <input type="text" name="nachname" id="nachname">
    </label>
    <label>Anmerkungen: 
        <textarea name="anmerkungen" id="anmerkungen"></textarea>
    </label>
    <input type="hidden" name="aktion" value="speichern">
    <input type="submit" value="speichern">
</form>

Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).

Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button:



(kann angegeben werden)

Nach Absenden kommt hier Feedback! Bitte nicht doppelt absenden. Danke.

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

unsere Videos bestellen

Unsere Videos und eBooks bestellen.

Spenden

Sie können uns eine Spende über PayPal zukommen lassen.

Weiterempfehlungen

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Bücher über Amazon

Bestellen Sie Bücher über folgende Links bei Amazon:

Fehler melden

Vielen Dank für Ihre Hilfe