2016-03-30 9 views
2

Gibt es eine Möglichkeit, den vorherigen Wert der ausgewählten Option zu erhalten?Vorheriger Wert der ausgewählten Option

der vorherige Wert Red

enter image description here

Wenn ich es zu grün wird die ausgewählte Farbe

echo Wie kann ich die vorherige Farbe echo die rot ist?

green

dies ist mein Code: Dank :)

<form action="#" method="post"> 
<select name="Color"> 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
<option value="Pink">Pink</option> 
<option value="Yellow">Yellow</option> 
</select> 
<input type="submit" name="submit" value="Get Selected Values" /> 
</form> 
<?php 
if(isset($_POST['submit'])){ 
$selected_val = $_POST['Color']; 
echo "You have selected :" .$selected_val . "<p>"; 
echo "The previous value is :" ; 
} 
?> 
+0

haben Sie ein verstecktes Feld in der Form, die aktuelle Farbe als Wert hat, geben Sie den entsprechenden Namen und es sollte verfügbar sein. –

Antwort

1

speichert der vorherige Wert als versteckter Wert in Ihrer Form und bekommt es

<?php 
if(isset($_POST['submit'])){ 
$selected_val = $_POST['Color']; 
$previous = $_POST['previous']; 
} 
?> 
<form action="#" method="post"> 
<select name="Color"> 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
<option value="Pink">Pink</option> 
<option value="Yellow">Yellow</option> 
</select> 
<input type="hidden" name="previous" value="<?php echo $selected_val; ?>"/> 
<input type="submit" name="submit" value="Get Selected Values" /> 
</form> 
<?php echo "You have selected :" .$selected_val . "<p>"; 
echo "The previous value is :".$previous ; ?> 
1

Da müssen Sie nie Vertrauen Sie den von Benutzern übermittelten Inhalt, eine andere Möglichkeit besteht darin, Ihr Formular aus PHP zu erstellen und den Test auf der Serverseite durchzuführen.

Beispiel:

<?php 
$colors = Array('Red', 'Green', 'Blue', 'Pink', 'Yellow'); 
?> 
<form method="POST"> 
<select name="Color"><?php 
foreach($colors as $color) 
{ 
    printf(' <option value="%1$s">%1$s</option>'."\n", $color); 
} 
?> 
</select> 
<input type="submit"> 
</form> 
<?php 
if (!empty($_POST['Color'])) 
{ 
    $previous_index = array_search($_POST['Color'], $colors) - 1; 
    // wrap around if the color is the first 
    if ($previous_index < 0) { 
     $previous_index = count($colors); 
    } 
    printf(
     "You have selected <q>%s</q>, the previous value is: %s\n", 
     $_POST['Color'], 
     $colors[ $previous_index ] 
    ); 
} 
?> 

Der Code ist offensichtlich länger, als es für erzieherische Zwecke könnte.

2

Verwenden Sie das versteckte Feld, um den aktuellen Wert zu speichern. Überprüfen Sie, ob der aktuelle Wert anders ist als der ausgewählte Wert.

Pro-Tipp: Immer Ihre verborgenen Felddaten

+0

guter Punkt mit dem Verschlüsselungsteil! – Snickbrack

1

verschlüsseln Hier ist eine andere Lösung jQuery verwenden, als Bonus Sie den Überblick über ganze Geschichte halten und nicht nur vorherige Auswahl.

Ich habe nicht den PHP-Teil getestet, aber Sie bekommen die Idee.

HTML

<form action="#" method="post"> 
<select name="Color" onChange="updateHistory(this);"> 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
<option value="Pink">Pink</option> 
<option value="Yellow">Yellow</option> 
</select> 
<input type="hidden" id="history" name="history" value=""> 
</div> 
</div> 
<input type="submit" name="submit" value="Get Selected Values" /> 
</form> 
<?php 
if(isset($_POST['submit'])){ 
$selected_val = $_POST['Color']; 
$hist = explode(',',$_POST['history']); 

// pop the last value, which is current selection 
array_pop($hist); 

// get the last value, which now is previous 
$last_valaue = end($hist); 
echo "You have selected :" .$selected_val . "<p>"; 
echo "The previous value is :" . $last_valaue ; 
echo 'DEBUG:<br>'; 
var_dump($hist); 
} 
?> 

JS

function updateHistory(el){ 
var val = $(el).val(); 
var hist = $('#history').val(); 
if (hist.length > 0) {hist += ','} 
hist += val; 
$('#history').val(hist); 
} 

Beispiel JS Fiddle

UPDATE 1:

Sie weitere Geschichte Array in PHP auf Ihre Bedürfnisse, zum Beispiel manipulieren kann, wenn Sie benötigen eindeutige Werte, können Sie array_unique() (http://php.net/manual/en/function.array-unique.php)

Verwandte Themen