Auswahl aus Auswahlliste soll stehen bleiben

groovecommander

Grünschnabel
Hallo,

ich habe eine Auswahlliste mit der ein User z.B. ein bestimmte Farbe wählen kann. Nachdem er nun die Farbe gewählt hat, steht in der Auswahlliste wieder die erste Farbe der Liste. Ich möchte aber, dass die Frabe die gewählt ist auch in der Liste stehen bleibt.

Beispiel
Ich habe vier Farben braun, blau, grün und gelb. Diese sind genau in der Reihenfolge in der Auswahlliste vorhanden. Wählt er nun grün, wird ihm zwar grün angezeigt, in der Liste steht jedoch braun. Ich möchte allerdings, dass in der Liste auch grün steht.

Vielleicht sollte ich noch erwähnen, dass das ganze aus einem Formular mit php ausgewertet wird.

Hat da jemand ne Idee oder nen Tipp, wie sowas funktioniert?

Vielen Dank im voraus
 
Zuletzt bearbeitet:
Hi;

meinst du vielleicht so etwas?

HTML:
...
<form action="">
<select name="farben" onchange="this.form.anzeige.value=this.form.farben.options[this.form.farben.selectedIndex].value">
<option>braun</option>
<option>blau</option>
<option>grün</option>
<option>gelb</option>
</select>
<input type="text" name="anzeige" value="Bitte wählen Sie eine Farbe" />
</form>
...

Anmerkung: Bei mir "funktioniert" das nur bei Netscape und FF, obwohl die dortige Konsole keine Fehlermeldung anzeigt. Weiss jemand warum idas im IE und Opera nicht klappt?

Greetz
 
Vielen Dank für Deine Antwort

So meinte ich es nicht, aber das ist auch eine interessante Möglichkeit.
Das Textfeld daneben muss nicht sein. Es soll quasi nur die Auswahl die der User getroffen hat in der Auswahlliste stehen bleiben.
 
also bei mir funktioniert das:
HTML:
<p>
    <select size="4" name="Farbauswahl">
    <option>Braun</option>
    <option>Blau</option>
    <option>Gelb</option>
    <option>Grün</option>
    </select><input type="submit" value="Abschicken" name="Submit">
    <input type="reset" value="Zurücksetzen" name="Löschen"></p>
 
Zuletzt bearbeitet:
PHP:
<form>
<select name="farben">
<option <?php echo($_GET['farben']=='braun')?'selected':'';?>>braun</option>
<option <?php echo($_GET['farben']=='blau')?'selected':'';?>>blau</option>
<option <?php echo($_GET['farben']=='grün')?'selected':'';?>>grün</option>
<option <?php echo($_GET['farben']=='gelb')?'selected':'';?>>gelb</option>
</select>
</form>
 
Ich hab mal kurzerhand eine vielleicht recht hilfreiche Funktion geschrieben, die das Ganze vereinfachen könnte:
PHP:
<?php

	/**
	 * Generiert auf Basis der Eingaben ein Optionsauswahlmenü
	 * 
	 * @param    array    options    Array der Optionswerte und -inhalte
	 * @param    string   name       vgl. name-Attribut des select-Elements
	 * @param    string   selected   Wert des vorzuselektierenden Optionselements
	 * @param    int      size       vgl. size-Attribut des option-Elements
	 * @param    bool     multiple   vgl. multiple-Attribut des select-Elements
	 * @return   string              Gibt Deklaration des Elements wieder
	 */

	function html_selectElement($name, $options, $selected='', $size=0, $multiple=false) {

		$return = '';
		if( !is_string($name) || !is_array($options) ) {
			return false;
		}
		$return .= sprintf(
			'<select name="%s"%s%s>',
				htmlspecialchars($name),
				( (int)$size > 0  ? ' size="'.((int)$size).'"' : '' ),
				( (bool)$multiple == true ? ' multiple="multiple"' : '' )
		);
		foreach( $options as $option ) {
			if( is_array($option) && count($option) == 2 ) {
				$return .= sprintf(
					'<option value="%s"%s>%s</option>',
						htmlspecialchars($option[1]),
						( $selected != false && $selected===$option[1] ? ' selected="selected"' : '' ),
						htmlspecialchars($option[0])
				);
			} elseif( is_string($option) ) {
				$return .= sprintf(
					'<option%s>%s</option>',
						( $selected != false && $selected===$option ? ' selected="selected"' : '' ),
						htmlspecialchars($option)
				);
			}
		}
		return $return.'</select>';

	}



	// Elementwert entspricht Elementinhalt
	$options = array(
		'braun',
		'blau',
		'grün',
		'gelb'
	);
	echo html_selectElement('foo', $options, 'gelb');

	// Unterschiedlicher Elementwert und -inhalt
	$options = array(
		array('Brauner Farbton', 'braun'),
		array('Blauer Farbton', 'blau'),
		array('Grüner Farbton', 'grün'),
		array('Gelber Farbton', 'gelb')
	);
	echo html_selectElement('bar', $options, 'blau');

?>
 
Zurück