Wie bei select im Formular Auswahl vorgeben?

  • Sorry für den etwas komprimierten Threadtitel. ;)


    Darum geht es:
    Ich möchte Formulareingaben validieren und bei Fehlern in der Eingabe zum Formular zurückkehren - dabei sollen die vorher vom Benutzer gemachten Eingaben erhalten bleiben.


    Bei einem Texteingabefeld mache ich das so:

    PHP
    <input type="text" name="textfeldname" value="<?php echo $_POST['textfeldname']; ?>">


    (htmlspecialchars und stripslashes Funktionen hab ich der Übersicht halber mal rausgelassen.)


    Frage: Wie mache ich das Gleiche bei einer select-Menüabfrage, dass die vorher gewählte Option nun sichtbar ist? Einen value für das select-Feld kann man ja nicht angeben.


    Hat jemand einen Tipp für mich?


    BTW: Ich möchte kein Javascript nutzen.



    Grüße, Öle


    Edit:


    War zu ungeduldig um zu warten ... ;), hab was gefunden, und zwar für jede option:

    PHP
    <option value="wert"<?PHP echo ($variable==wert ? " selected" : ""); ?>>wert</option>


    Scheint nur mit if-Abfrage zu gehen. Bessere Lösungen herzlich willkommen ;).

    Mit Grüßen ...

  • Update:


    Sehr merkwürdig. Der o.g. Weg klappt nur im Firefox, nicht aber im IE. Im Quelltext wird beim IE das Gänsefüßchen hinter dem 'selected' ausgegeben, beim Firefox hingegen nicht.


    Wie kann das möglich sein?


    Ratloser Öle :confused:

    Mit Grüßen ...

  • Erstmal: Eine grundsätzlich schönere/bessere Möglichkeit gibt es nicht.


    Dass es beim FF klappt und beim IE nicht finde ich allerdings sehr merkwürdig, da es ja was serverseitiges ist. Das einzige, das mir aufgefallen ist, dass du $variable==wert statt $variable==$wert geschrieben hast. Was passiert, wenn du das Script über die Kommandozeile (PHP-Interpreter) oder über Telnet (über HTTP-Befehle) aufrufst?


    Über Telnet sollte es so gehen (Achtung: ist auswenig hingeschrieben...):


    telnet Servername 80


    also z.B. telnet http://www.telefon-treff.de 80


    Und dann in Telnet:


    GET Pfad HTTP/1.1
    Host: Servename
    Leerzeile


    also z.B.


    GET /showthread.php?s=&threadid=173968 HTTP/1.1
    Host: http://www.telefon-treff.de
    Leerzeile

  • Zitat

    Original geschrieben von Cyber-Shadow
    Erstmal: Eine grundsätzlich schönere/bessere Möglichkeit gibt es nicht.


    Danke, das ist schon mal wichtig.

    Zitat

    Dass es beim FF klappt und beim IE nicht finde ich allerdings sehr merkwürdig, da es ja was serverseitiges ist. Das einzige, das mir aufgefallen ist, dass du $variable==wert statt $variable==$wert geschrieben hast.


    Sorry, das ist mir hier beim Tippen im Forum passiert. Im Original steht da natürlich $wert.


    Hab den Fehler nun, er passierte, weil ich das Ganze in einem echo-String eingebunden hatte und ein \" zuviel gesetzt hatte.


    Aber es hat mich auch sehr irritiert, dass der Quelltext von Firefox und IE da was unterschiedliches ausgeben und es zudem im Firefox funktionierte und im IE nicht.


    Falls von Interesse, kann ich die entsprechende Zeile ja mal posten.


    Telnet-Zugriff hab ich mir dann mal ersparen können ;)


    Danke für die Mühe, Öle

    Mit Grüßen ...

  • Zitat

    Original geschrieben von rajenske
    Aber es hat mich auch sehr irritiert, dass der Quelltext von Firefox und IE da was unterschiedliches ausgeben und es zudem im Firefox funktionierte und im IE nicht.


    Wenn im FF in einem Quelltext ein <xxx vorkommt und später, ohne dass dazwischen ein > stand, nochmal ein < wird vor das zweite < automatisch ein > gesetzt, um den <xxx>-Tag zu schließen. Vermutlich wird er auch in dem Fall einen Fehler erkannt und selbst korrigiert haben.

  • Zitat

    Original geschrieben von Weizen
    Wenn im FF in einem Quelltext ein <xxx vorkommt und später, ohne dass dazwischen ein > stand, nochmal ein < wird vor das zweite < automatisch ein > gesetzt, um den <xxx>-Tag zu schließen. Vermutlich wird er auch in dem Fall einen Fehler erkannt und selbst korrigiert haben.


    Wird wohl so gewesen sein wie du schreibst.


    Hab jetzt noch einen unverbindlichen Tipp bekommen, das Ausgangsproblem oben mit der Funktion sprintf() zu lösen. Kann das jemand in groben Zügen erklären?


    Nicht dringend, nur falls sich das ohne großen Aufwand erklären lässt. Die Seite zu dieser Funktion im PHP-Manual hilft mir (!) gar nicht ;). Bisher habe ich die Funktion sprintf() nur mal zum Formatieren von Prozentangaben und Geldbeträgen benutzt.


    Grüße, Öle

    Mit Grüßen ...

  • Naja, also eins ist klar: Du musst ja irgendwie ein "selected" in den option-Tag reinbekommen. Dazu musst du aber auf jeden Fall irgendwie eine Bedingung auswerten und da kann ich mir überhaupt nicht vorstellen, wie dir sprintf dabei helfen soll und vor allem so, dass es noch kürzer ist als bei dir.


    Du könntest sowas machen wie

    PHP
    printf("<option value=\"wert\"%s>wert</option>", ($variable==$wert ? " selected" : ""));


    machen, aber das hilft ja auch nicht wirklich, außer dass vielleicht manche behaupten könnten, dass es übersichtlicher ist.

  • Danke. Ich werd es dann mal so lassen, wie ich es jetzt hab, läuft ja wunderbar - und ich verstehe es sogar ;).


    Grüße, Öle

    Mit Grüßen ...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!