|
Home - Programmieren - PHP - PHP und Formulare
Hinweis: Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich. Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren. [Druckansicht] [Als E-Mail senden] [Kommentar verfassen] Formularen sind das tägliche Brot, wenn man mit PHP programmieren möchte und gleichzeitig eine Quelle der Frustration für viele Anfänger. Deswegen möchte ich anhand eines Beispiels zeigen, wie man mit den Elementen eines Formulars arbeiten kann und wie man ein Formular zur Datenerfassung und zum Editieren verwenden kann. Im oberen Teil sind die verschiedenen Eingabeelemente, deren Inhalt mit dem Button "Abschicken" gespeichert werden kann. Der Link "Neuer Datensatz" spricht für sich selbst. Darunter wird für jeden gespeicherten Datensatz ein Link angezeigt, mit dem man den Datensatz wieder aufrufen und seinen Inhalt im Formular anzeigen bzw. ändern kann. Dieses Beispiel verwendet eine MySQL-Tabelle mit folgender Struktur: CREATE TABLE formular ( Hier beginnt unser Formular. <FORM METHOD="post" ACTION="formular.php"> Einzeiliges Textfeld Damit man das Feld zur Ein- und Ausgabe verwenden kann, muß man ihm mitteilen, was angezeigt werden soll. Dies geschieht mit VALUE="<? echo $text1 ?>" . Beim ersten Aufruf hat $text1 keinen Wert und das Feld ist leer. Wurde aber ein existierender Datensatz gewählt, wird hier der Text angezeigt. <INPUT TYPE="text" NAME="text1" SIZE="40"
MAXLENGTH="40" Ich habe es mir zur Gewohnheit gemacht, die Ausgabe von Daten immer in der oben dargestellten Form zu machen. Die Alternative wäre folgende Form: <? Die erste Darstellung hat zwei wesentliche Vorteile. Erstens ist es wesentlich weniger Schreibarbeit, weil man die Anführungszeichen nicht mit \ maskieren muß. Zweitens kann der HTML-Code in der oben dargestellten Form weiterhin mit Programmen wie z.B. Dreamweaver bearbeitet und geändert werden. Mehrzeiliges Textfeld <TEXTAREA NAME="text2" WRAP="STANDARD" COLS="40"
ROWS="5">
<? Natürlich soll das Kontrollkästchen auch den Zustand anzeigen, der in einem Datensatz gespeichert ist. Oben habe ich eine Möglichkeit dargestellt, wie man mit PHP das Kontrollkästchen ein- bzw. ausschalten kann. Hat $checkbox1 den Wert 1, bedeutet das, daß es angeklickt war, als der Datensatz gespeichert wurde. In diesem Fall muß in die INPUT Zeile das Wort CHECKED eingefügt werden. Dies geschieht durch die Variable $chk, die entweder das Wort "CHECKED" oder "" enthält. Diese Variante ist aber ziemlich umständlich und erfordert zu viel Schreibarbeit. (Gute Programmierer sind faul) Deshalb zeige ich bei checkbox2 eine andere Variante, die ich auch im Rest des Programms benützen werde. <INPUT TYPE="checkbox" NAME="checkbox2" Der Ausdruck <? echo ($checkbox2==1) ? "CHECKED" : "" ?> schaut auf den ersten Blick ein bißchen verwirrend aus, wenn man nicht damit vertraut ist. Die Sache ist aber ganz einfach. Es handelt sich dabei bloß um eine andere Schreibweise für einen if() Block. Zuerst wird der Ausdruck innerhalb der Klammer ausgewertet. Ergibt er den Wert TRUE, wird die Option nach dem Fragezeichen gewählt, andernfalls wird der Wert nach dem Doppelpunkt angezeigt. Wenn also $checkbox2 den Wert 1 hat, wird "CHECKED" ausgegeben und das Kontrollkästchen wird aktiviert. Radiobutton Dazu wird bei NAME immer die selbe Bezeichnung eingetragen. Wichtig ist, daß sich die einzelnen Buttons im VALUE unterscheiden. Je nachdem, welcher Button vom Benützer angeklickt wurde, wird der entsprechende Wert an den Server zurückgeschickt. Auch bei Radiobuttons wird durch CHECKED angegeben, welcher Button aktiviert wurde.
Auswahlliste
Timestamp <? Nun wird nur mehr abgefragt, ob $datum einen Wert hat und ggf. das Datum im Format. dd.mm.yyyy hh:mm:ss angezeigt. <TD WIDTH="336" VALIGN="TOP"><? echo ($datum)
? datum($datum) : "" ?> Bevor wir das Formular an den Server zurückschicken, müssen wird noch den Wert für ID in einer Variablen ablegen. Dieser Wert enthält die Datensatznummer, falls ein bestehender Datensatz editiert wurde. Andernfalls bleibt $ID leer. Dadurch kann man unterscheiden, ob die Daten mit UPDATE aktualisiert werden müssen oder eine neuer Datensatz mit INSERT angelegt werden soll. <INPUT TYPE="hidden" NAME="ID" VALUE="<? echo
$ID ?>"> Unterhalb des Formulars werden nun noch Links angelegt, mit denen man bestehende Datensätze aufrufen bzw. einen neuen Datensatz anlegen kann. Diese Links könnten auch in einer anderen Datei stehen. <a href="formular.php">Neuer Datensatz</a> Um einen neuen Datensatz anzulegen, wird einfach das Formular ohne Angabe einer Datensatznummer aufgerufen. Dadurch bleiben alle Eingabefelder leer. Bestehende Datensätze werden abgefragt und die ID in die Links als Parameter eingefügt.
Wenn nun der Button "Abschicken" oder ein Link angeklickt wird, sendet der Browser das Formular mit den Daten zurück an den Server. Dort müssen die Daten noch gespeichert werden. Deshalb müssen wir am Dateianfang noch folgenden Code eingeben. Ich verwende in meinen Programmen immer eine eigene PHP Datei, mit der ich die Verbindung zur Datenbank herstelle. Das hat den Vorteil, daß ich die Zugangsdaten nur an einer Stelle ändern muß, wenn eine Website installiert wird und außerdem kann ich in jeder Datei die Verbindung ganz einfach herstellen, indem ich bloß die folgende Zeile eingebe: <? include("datenbank.php"); ?> Die Datei "datenbank.php" sieht so aus:
Zuerst wird geprüft, ob das Formular abgeschickt wurde. Die Variable $Button
kommt von der Zeile Wurde der Button angeklickt, dann ist die Bedingung erfüllt und es kann ermittelt werden, ob eine ID vorhanden ist. Fehlt die ID, handelt es sich um einen neuen Datensatz, der mit INSERT eingefügt wird. Andernfalls wird UPDATE ausgeführt. Möchte man die soeben gespeicherten Daten nicht mehr im Formular anzeigen, muß man die Variable $ID mit unset($ID) zerstören. <? Wenn ein Link angeklickt wurde, hat $ID weiterhin einen Wert. Dieser Datensatz wird aus der Datenbank abgefragt und sein Inhalt im Formular angezeigt. <?
|
Autoren:03760
Artikel:00815 Glossar:04618 News:08554 Userbeiträge:16077 Queueeinträge:00024
Unternehmensimage im Internet aufbauen
Hotels.com geht Offline DMSFACTORY erleichtert Implementierung von DMS über Skype [Mehr News]
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
|