2016-07-26 8 views
2

Meine erste Frage, wenn nicht angemessen, bitte ignorieren.PHP Drop-Down-Problem

Ich habe ein Dropdown in php codiert, die verwendet wird, um einen Wert auszuwählen. Der eingestellte Wert ist "Aus", 0, 1, 2, ... 179 (d. H. Insgesamt 181 Werte).

Am Anfang zeigt das Dropdown-Menü alle 181 Werte korrekt an.

Nachdem der Wert aus der Dropdown-Liste ausgewählt wurde, wird eine andere Schaltfläche gedrückt, um eine mysql-Prozedur aufzurufen. Bei Beendigung des Anrufs wird die Seite aktualisiert.

Die Dropdown-Liste soll den ausgewählten Wert bei Seitenaktualisierungen beibehalten, was er auch tut. Der Benutzer sollte jedoch die Werte ändern dürfen.

Allerdings, nach der ersten Seite aktualisieren, Wenn ich versuche, einen anderen Wert aus der Dropdown-Liste auszuwählen, alles, was ich dort sehe, ist der zuvor ausgewählte Wert 181 mal.

Unten ist der Code, könnte jemand bitte helfen, es zu beheben.

Ich bin kein PHP-Programmierer, ich versuche nur einen Fehler zu beheben, den meine Ressource dort gelassen hat.

<select style="width: 87px; height:35px;color:#113C83;margin-bottom:0;border-right-width:0;" id="angle1"> 
<option value="Off">Off</option> 
<?php 
for($i=0;$i<=179;$i++) 
{ 
     if(isset($_SESSION['angle1'])) 
     { 
     ?> 
     <option value="<?php echo $_SESSION['angle1']; ?>" selected><?php echo $_SESSION['angle1']; ?></option> 
     <?php 
     } 
     else 
     { ?> 
    <option value="<?php echo $i; ?>"><?php echo $i; ?></option> 
    <?php 
     } 
    } ?> 
</select> 

+0

weil du, das ist Setze bereits $ 'SESSION ['angle1']', was zu 'isset ($ _ SESSION [' angle1 '])' führt, auf 'true' und nie auf 'else'. –

+0

Eine schnelle und dreckige Lösung besteht darin, Ihre if-Anweisung in 'if (isset ($ _ SESSION ['angle1']) && $ i == $ _SESSION ['angle1'])' – Drakes

+0

@HardysonArthy: Ich konnte das Problem beheben basierend auf Ihrer Eingabe und es hat funktioniert. Danke vielmals. – kpv

Antwort

1

Das ist, weil Sie nicht den richtigen Zustand angeben:

<select style="width: 87px; height:35px;color:#113C83;margin-bottom:0;border-right-width:0;" id="angle1"> 
<option value="Off">Off</option> 
<?php 
for($i=0;$i<=179;$i++) 
{ 
     if(isset($_SESSION['angle1']) && ($i == $_SESSION['angle1'])) //when you refresh isset($_SESSION['angle1']) will be always true 
     { 
     ?> 
     <option value="<?php echo $_SESSION['angle1']; ?>" selected><?php echo $_SESSION['angle1']; ?></option> 
     <?php 
     } 
     else 
     { ?> 
    <option value="<?php echo $i; ?>"><?php echo $i; ?></option> 
    <?php 
     } 
    } ?> 
</select> 
2

Dies ist, weil Sie die Existenz von $_SESSION['angle1'] mit isset($_SESSION['angle1'] testen, aber nicht, dass der Wert passt es enthält den aktuellen Schleifenzähler $i

Diese Tests korrekt unter der Annahme, dass $_SESSION['angle1'] enthält den Wert des vorherigen ausgewählten Winkels.

Dieser Code auch unter Verwendung eines ternären Operator erheblich vereinfacht, die Entscheidung zu treffen

<select style="width: 87px; height:35px;color:#113C83;margin-bottom:0;border-right-width:0;" id="angle1"> 
    <option value="Off">Off</option> 
<?php 
    for($i=0; $i <= 179; $i++) { 
     $sel = isset($_SESSION['angle1']) && $_SESSION['angle1'] == $i ? 'selected="selected" : ''; 

     echo '<option ' . $sel . ' value="' . $i . '">' . $i .'</option>';  
    } 
?>