zwei select felder ändern

WaldemarFunk

Grünschnabel
Hallo!
Ich habe folgendes Problem:

Ich habe zwei select felder und möchte, dass wenn im ersten selectfeld ein bestimmter wert ausgewählt wird, das das zweite feld automatisch geendert wird und umgekehrt.

<select name="howmanypockets" >
<option> </option>
<option <? if ($_POST [howmanypockets] == "Ohne") echo 'SELECTED'; else if ($_POST [pockets] == "Ohne") echo 'SELECTED'; ?>>Ohne</option>
<option <? if ($_POST [howmanypockets] == "1") echo 'SELECTED'; ?>>1</option>
<option <? if ($_POST [howmanypockets] == "2") echo 'SELECTED'; ?>>2</option>
</select>

<select name="pockets">
<option> </option>
<option <? if ($_POST [pockets] == "Ohne") echo 'SELECTED'; else if ($_POST [howmanypockets] == "Ohne") echo 'SELECTED'; ?>>Ohne</option>
<option <? if ($_POST [pockets] == "T1") echo 'SELECTED';?>>T1</option>
<option <? if ($_POST [pockets] == "T2") echo 'SELECTED';?>>T2</option>
<option <? if ($_POST [pockets] == "T3") echo 'SELECTED'; ?>>T3</option>
</select>


Leider funktioniert das was ich mir ausgedacht habe nicht ganz.
Vielleicht sollte ich das ganze auch anders angehen ?

Danke schon mal !
 
Mal ganz davon abgesehen, dass du Struktur in deinen Code bringen solltest, fehlt in jeder deiner Auswahloptionen eine Wertzuweisung (value="...").
Achja noch etwas: Assoziative Schlüssel von Arrays schreibt man als String, nicht als Konstante!
PHP:
<!-- gekürzt: -->
<select name="howmanypockets" >
<option value="Ohne"
<?php
if ($_POST['howmanypockets'] == "Ohne") {
    echo 'SELECTED';
} else if ($_POST['pockets'] == "Ohne") {
    echo 'SELECTED';
}
?>
>Ohne</option>
...
</select>
 
Danke für die schnelle Antwort,

leider bringt mich das nicht weiter.
Vielleicht habe ich mich etwas falsch ausgedrückt.
Ich möchte dass sobald in einem der beiden select feldern der Wert "Ohne" gewählt wird, das andere Feld automatisch auch den Wert "Ohne" erhält. das muss in beide Richtungen funktionieren, egal in welchem der beiden Feldern der Wert "Ohne" gewählt wurde.
 
Hast du das Ganze überhaupt mal umgesetzt/ausprobiert? Denn eigentlich sollten die Änderungen zu gewünschtem Effekt führen.
 
Ich habe das ganze natürlich probiert. Es funktioniert aber nur beim ersten mal, das heisst wenn im ersten select feld "Ohne ausgewählt wird funktioniert es, sobald aber im zweiten select feld ein anderer Wert gewählt wird und im ersten der "Ohne" wert steht funktionier das ganze nicht mehr.

Ich hoffe ich konnte mich verständlich machen.
 
na dann ergänzt du einfach die if und setzt statt das Wort Ohne einfach eine 0 ein.

PHP:
<?php 
if ($_POST['howmanypockets'] == '0' OR $_POST['pockets'] == '0') { 
    echo 'SELECTED'; 
} 
?>

Das setzt du einfach in beide select-tags.
 
Du hast aber schon verstanden, dass ich in meinem Beitrag lediglich eine gekürzte Fassung des ersten Select-Feldes aufgezeigt habe, um die allgemeine Struktur klar zu machen. Die gleichen Änderungen musst du natürlich auch für das zweite Select-Feld tätigen.

D.h. ganz muss es so aussehen:
PHP:
<select name="howmanypockets"> 
<option value="Ohne" 
<?php 
if (($_POST['howmanypockets'] == 'Ohne') || ($_POST['pockets'] == 'Ohne')) { 
    echo 'SELECTED'; 
}
?> 
>Ohne</option> 
<option value="1" 
<?php 
if ($_POST['howmanypockets'] == 1) { 
    echo 'SELECTED'; 
}
?>
>1</option>
<option value="2" 
<?php 
if ($_POST['howmanypockets'] == 2) { 
    echo 'SELECTED'; 
}
?>
>2</option>
</select> 

<select name="pockets"> 
<option value="Ohne" 
<?php 
if (($_POST['howmanypockets'] == 'Ohne') || ($_POST['pockets'] == 'Ohne')) { 
    echo 'SELECTED'; 
}
?> 
>Ohne</option> 
<option value="T1" 
<?php 
if ($_POST['pockets'] == 'T1') { 
    echo 'SELECTED'; 
}
?>
>T1</option>
<option value="T2" 
<?php 
if ($_POST['pockets'] == 'T2') { 
    echo 'SELECTED'; 
}
?>
>T2</option>
<option value="T3" 
<?php 
if ($_POST['pockets'] == 'T3') { 
    echo 'SELECTED'; 
}
?>
>T3</option>
</select>
 
Danke für die Hilfe !

Funktioniert leider immer noch nicht so wie es soll.
Versuche es jetzt mit einer komlet anderen möglichkeit, ohne select felder.
 
Erst mal um Missverständnissen vorzubeugen...ich nehme an, dass du das Ganze auch wirklich erst nach dem Senden machen willst.
Es würde mit Javascript zwar auch ohne gehen...dann wären die Listen aber nicht mehr wählbar, sobald eine der Listen "Ohne"ist.

Das Problem, dass der PHP-Code so nicht funktioniert, ist die Tatsache, dass du, sobald der "Ohne"-Fall eintritt, in den "NON-Ohne-Feldern":-) kein selected ausgeben darfst...momentan geschieht das aber weiterhin.
Wenn mehrere Optionen in einem <select>, welches nicht "multiple" ist, als "selected" gekennzeichnet werden, wird die letzte davon ausgewählt.

Die einfache Lösung wäre:
packe die "Ohne"-Optionen ans Ende der Listen.

Die Bessere:
Code:
<?php
$blnOhne=($_POST['howmanypockets'] == 'Ohne') || ($_POST['pockets'] == 'Ohne');
?>

<select name="howmanypockets">
<option<?php echo ($blnOhne)?' selected':'';?>>Ohne</option>
<option<?php echo (!$blnOhne && $_POST['howmanypockets'] =='1')?' selected':'';?>>1</option>
<option<?php echo (!$blnOhne && $_POST['howmanypockets'] =='2')?' selected':'';?>>2</option>
</select>

<select name="pockets">
<option<?php echo ($blnOhne)?' selected':'';?>>Ohne</option>
<option<?php echo (!$blnOhne && $_POST['pockets'] =='T1')?' selected':'';?>>T1</option>
<option<?php echo (!$blnOhne && $_POST['pockets'] =='T2')?' selected':'';?>>T2</option>
<option<?php echo (!$blnOhne && $_POST['pockets'] =='T3')?' selected':'';?>>T3</option>
</select>


Ansonsten....auf "value" kannst du natürlich verzichten, wenn der Options-Text übermittelt werden soll.
 
Zurück