2016-03-30 13 views
2

選択オプションの以前の値を取得する方法はありますか?選択オプションの前の値を取得

前の値がレッド

enter image description here

である私は緑に変更する場合、それはどのように私はで、前の色をエコーすることができ、選択した色

エコーのだろうか?

green

これは私のコードです:あなたは決してしなければならないので、隠された値として、フォーム内の前の値感謝:)

<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

現在の色が値のフォームに非表示のフィールドがある場合は、適切な名前を付けてください。 –

答えて

1

店、それに

<?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

を取得別の方法は、PHPからフォームを構築し、サーバー側でテストを行うことです。

例:

<?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 ] 
    ); 
} 
?> 

コードは、教育的な目的のために、明らかに長いことができるよりもあります。

2

現在の値を格納するために非表示フィールドを使用します。フォームポストで、現在の値が選択した値と異なるかどうかを確認してください。

プロヒント:いつもここ

+0

暗号化部分の良い点! – Snickbrack

1

あなたの隠されたフィールドのデータを暗号化し、あなたが全体の歴史だけでなく、以前の選択を追跡するのボーナスとして、jQueryのを使用して、別のソリューションです。

私はPHPの部分をテストしていませんが、あなたはそのアイデアを得ています。

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); 
} 

JS Fiddle

UPDATE 1:

ます場合は、さらに、例えば、あなたのニーズにPHPの歴史配列を操作することができます固有の値が必要な場合は、array_unique()http://php.net/manual/en/function.array-unique.php

関連する問題