Beste Möglichkeit, "selected" an <option>-Tags anzuhängen?

multimolti

Erfahrenes Mitglied
Hallo!

Ich habe eine HTML-Auswahlliste, in der man etwas auswählen kann. Wenn das Formular jetzt abgesendet wird, und die Informationen nicht stimmen, will ich, das die vorher eingegebenen Daten eingestellt bleiben. Bei <input> oder <textarea> ist das kein Problem, aber wenn ich z.B. 5 <option>-Tags habe, und will, das nur bei dem vorher ausgewählten zusätzlich der Text "selected" ausgegeben wird, wie mache ich das am Besten?

Für jede Möglichkeit eine Variable anzulegen und dann mit einer if-Abfrage zu checken, welcher Variable jetzt "selected" oder "" zugewiesen wird ist ziemlich bescheiden.

Wenn ich die Information über die Möglichkeiten in einem Array hätte, könnte ich das mit einer foreach-Schleife machen, und dann dort if($möglichkeit == $möglichkeit_nr) echo "selected"; einfügen, oder?
 
Sofern ich es richtig verstanden habe: ja, ist möglich.
Und so ganz spontan fällt mir auch keine bessere Lösung ein...
 
Ist auch so die einzige Lösung was es da gibt. Es gibt höchstens andere Möglichkeiten wie man das Selected hinein schreibt. Also zum Beispiel bei jedem Durchlauf über eine If-Abfrage die HTML-Attribute in eine Variable speichern. Und diese dann einfach bei jedem Option anhängen.
 
Hallo,
was ganz schnell und einfach ist, ist einfach das was du übergeben hast wieder da einzufügen.

Also, du hast nun sag ich mal diese aufstellung:
HTML:
<select size="1" name="form1">
    <option selected>NR.1</option>
    <option>NR.2</option>
  </select>
Dann machste einfach auf der nächsten Seite, wenn es nicht stimmt:
HTML:
<select size="1" name="form1">
    <option selected><?php echo $vongerade; ?></option>
    <option>-------</option>
    <option>NR.1</option>
    <option>NR.2</option>
  </select>
Ist nicht schön, aber schnell und einfach.
 
nein, es ist einfach nur <option selected>bla</option>.

Dann werde ich es eben mit diesem Array machen, weil es ist wirklich dämlich, es so zu machen:
PHP:
	switch($firmenart)
	{
		case "1": $form_checked['gmbh'] = "selected"; break;
		case "2": $form_checked['corporation'] = "selected"; break;
		case "3": $form_checked['foundation'] = "selected"; break;
		case "4": $form_checked['ag'] = "selected"; break;
		default: $form_checked['gmbh'] = "selected"; break;
	}
 
Ne, die habe ich mir einfach ausgedacht^^
Wird mal ein Browsergame, wo man bei der Registrierung neben Benutzernamen auch Firmennamen und eben die Geschäftsform angeben kann. Habe nur mal zum Test ein Registrations-Client gemacht, und da dann 4 Formen eingetragen. Später wird das dann aus einer Datenbank kommen, ja.

Infolink: http://imbissgame.im.funpic.de/
 
Wenn mal später alles in eine Datenbank kommt sollte es ja nicht das Problem sein die ID abzufragen welche gewählt wurde. Den Array bekommst du ja automatisch aus der DB (inkl. ID). Dann wie bereits gesagt die If-Abfrage.
 
Am elegantesten löse ich dieses altbekannte Problem mit JavaScript -- ich schreibe also überhaupt keinen PHP-Code, um eine Vorauswahl im <select> zu treffen, sondern lasse das von einer kleinen JavaScript-Zeile erledigen. Geht natürlich nur, wenn im Browser JavaScript aktiviert ist -- was allerdings bei mehr oder weniger allen Leuten der Fall ist.

Wenn ich absolute Kompatibilität will, komme ich natürlich um PHP-Code nicht herum. In diesem Fall sorge ich für eine Anwendungsarchitektur, welche die Behandlung von falschen Eingaben in Formularen möglichst automatisiert.

-Gawayn
 
Zurück