2010-12-12 15 views
5

私のドロップダウンリストには、各オプションごとに2つの異なる値があります。両方を取得するにはどうすればよいですか?私が意味することを説明しましょう。フォームが掲載されている場合PHP get dropdownlistオプション値を選択

<select name="my_ddl"> 
    <option value="<?php $value_Id ?>"><?php $value_text ?></option> 
    <option value="<?php $value_Id ?>"><?php $value_text ?></option> 
</select> 

、私は、$ VALUE_IDと選択したオプションの$ value_text両方を取得できるようにしたいです。これどうやってするの?

$ _POST ['my_ddl']は、両方ではなく1つの値を取得します。

asp.netで私は単にmy_ddl.Valueとmy_ddl.Textを参照することでこれを行うことができました。

ありがとうございました!

答えて

5

厳密には、これはできません。

を行うことができますが、あなたのvalue属性で区切り文字を使用している:あなたは<option>のためのテキストを移入するためにPHPを使用している場合

<select name="my_ddl"> 
    <option value="<?php echo $value_Id ?>|<?php echo $value_text ?>"><?php echo $value_text ?> 
    </option> 
</select> 

そして...

<?php  
    list($id, $text) = explode('|', $_POST['my_ddl']); 
    //... 
?> 
+0

ありがとうございました!これは優れた働きをした。だから私はそれを信じることができません。 –

0

おそらくサーバー上で値を見ることができます。 $ value_idを使用してデータベーステーブルのテキストを検索するだけでよいのでしょうか?

そうでない場合は、フォームに非表示フィールドを追加し、JavaScriptを使用して新しい値が選択されるたびにその非表示フィールドをテキストで更新することができます。

0

POSTデータからvalue_textを取得することはできません。 1つの解決策は、JavaScriptを使用してオプションを選択した後に、非表示のフィールドに値を設定することです。

3

それを行うためのもう一つの奇妙な方法は次のとおりです。

<select name="my_ddl"> 
    <option value="<?php echo $value_Id ?>[<?php echo $value_text ?>]"> 
    <?php echo $value_text ?> 
    </option> 
</select> 

次に、あなたがそれを処理するときに、この以上の単純な多分何か行うことができます:PHPは[]としての意味を扱いますので

foreach ($_POST['my_dd1'] as $value_Id => $value_text) { 
    $value_Id = $value_Id; 
    $value_text = $value_text; 
} 

を文字列は配列なので、即座に連想配列ができます。私はあなたが最初にそれを置くなら、あなたはちょうどこれに頼るのではなく、コードでそれを再び見ることができなければならないことに同意します。

関連する問題