Ich habe ein Formular bestehend aus 11 Elementen ( Eingabe und Markierungen ). Das Formular verfügt über Formularüberprüfung, die eine Fehlermeldung neben Feld aufgibt, wenn ein Benutzer falsche Daten eingibt. Ich möchte die korrekten Daten beibehalten, die in die Felder eingegeben werden, nachdem die Seite aktualisiert wurde.
Nehmen wir beispielsweise an, dass 10 Felder korrekt und 1 Feld falsch ausgefüllt wurden. Wenn der Benutzer die Senden-Schaltfläche drückt, wird neben dem Feld eine Fehlermeldung angezeigt. Ich möchte die 10 korrekten Werte beibehalten, damit der Benutzer nicht von vorne beginnen muss.
Für die Eingabeelemente funktioniert das gut, aber für die Auswahlelemente funktioniert das nicht. Wichtig ist, dass ich die Dropdownliste dynamisch mit PHP bevölke.
Ist das in PHP möglich, da ich nicht weiß wie?
Im Folgenden sehen Sie ein Beispiel, wie ich eine Dropdown-Liste eines Auswahlelements erzeuge.
%Vor%Was die Eingabeelemente betrifft, erreiche ich dies mit dem folgenden:
%Vor% Wie in der doppelten verknüpften Frage beschrieben, soll das Attribut selected
die gesendete Option markieren. Das selected
-Attribut behebt das Problem, um den ausgewählten Wert sichtbar zu machen.
Zusätzlich kann Ihr Code davon profitieren, das select-Element auf modulare Weise an die (SQL-) Daten zu binden.
Lassen Sie uns keinen Moment auf den Abruf der Daten achten und sagen Sie einfach, dass sie von einem Generator stammen:
%Vor%Diese kleine Funktion gibt die HMTL eines select -Elements mit den Daten eines Generators zurück, der einen vorhandenen Wert auswählt (falls ein Teil der Optionen vorhanden ist).
Kombinieren Sie es mit einem beliebigen Generator, zum Beispiel aus einer Datenquelle, und fügen Sie es einfach in Ihr Formularvorlagen-Skript ein:
%Vor% Wenn Sie also 10 Auswahlen haben, kann dies leicht übernommen werden. Da die Datenbankverbindung, wie Sie wissen, an die Funktion datasource
übergeben wird, wäre es interessant zu sehen, was diese Funktion tatsächlich tut. Diese Funktion ist noch einfacher:
Es fragt die Abfrage der Datenbankverbindung ab (es ist eine andere Art zu schreiben wie in Ihrem Code, aber es ist das gleiche $connection
wie in Ihrem Beispiel) und iteriert dann über das Ergebnis (wenn es ein Ergebnis gibt). Dann ergibt sich jeder Optionswert. Das yield
ist eine spezielle Form der Rückkehr von einer Funktion, die einen Generator erzeugt, der in der select
-Funktion für die Ausgabe verwendet wird, indem der Generator in% co_de verwendet wird % Schleife dort. Jedes Nachgeben wird zu einer Iteration des Generators .
Ich hoffe, dies zeigt, wie Sie davon profitieren können, Ihren Code in Funktionen zu unterteilen. Werte, die sich ändern, sollten in Variablen eingegeben werden. Dies ist leicht durch Erstellen von Funktionen und Verwenden von Parametern für diese Werte möglich. Sie erweitern die Sprache gewissermaßen auf Ihre speziellen Bedürfnisse, wie das Erstellen ausgewählter Elemente.
Ist das in PHP möglich, da ich nicht weiß wie?
Ja, es ist möglich, die ausgewählten Werte beizubehalten, indem Sie verwenden ausgewähltes Attribut für die Optionselemente
Zum Beispiel enthält das <option>
-Tag darunter dieses Attribut:
Wenn Sie sich für die XHTML-Validierung interessieren, verwenden Sie selected="selected"
- lesen Sie diese Antwort , um weitere Informationen zu erhalten.
Aus dem Abschnitt Beispiele der MDN-Dokumentation für <select>
, das folgende HTML ist aufgeführt:
Um dies mit dem PHP-Code zu erreichen, muss das ausgewählte -Attribut der Option bedingt hinzugefügt werden.
Speichern Sie als Erstes vor der while -Schlaufe den ausgewählten Ort in einer Variablen:
%Vor% Setzen Sie dann in der while -Schleife das ausgewählte -Attribut, wenn die passende Option gefunden wird (d. h. wenn $selectedLocation == $row['description']
).
Sehen Sie eine Demonstration dazu in dieser phpfiddle .