5

in the following:

<form  action="test.php"  method="POST">  
    <select id="test" name="test">
     <option value="1">Test One</option>
     <option value="2">Test Two</option>
    </select>
</form>

in test.php, I can get 1 or 2 as follow:

$result=$_POST['test'];

How can I get the text of the selected option (i.e. "Test One" or "Test Two") using php

4

9 に答える 9

22

これは PHP だけでできることではありません。valuePHP スクリプトは、投稿された情報 (投稿されたselectedオプションの情報) のみを「見る」ことができます。javascript を使用してinput、選択した のテキスト コンテンツで隠しフィールドを変更できます。これは配列optionに含まれます。$_POST

<form  action="test.php"  method="POST">  
    <select id="test" onchange="document.getElementById('text_content').value=this.options[this.selectedIndex].text">
     <option value="1">Test One</option>
     <option value="2">Test Two</option>
    </select>

<input type="hidden" name="test_text" id="text_content" value="" />
</form>

これ$_POST['test_text']により、選択したインデックスを使用できるようになります (ただしonchange()、ユーザーが選択フィールドをデフォルト値のままにしても、ページが読み込まれるときに関数を強制する必要があります。

于 2012-08-13T00:23:02.443 に答える
16

valueフォーム コントロールののみがサーバーに送信されます。両方を送信する簡単な方法は、単純に両方を に含めることvalueです。

<select name="test">
    <option value="1|Test one">Test one</option>
    <option value="2|Test two">Test two</option>
</select>

その後:

$test = explode('|', $_POST['test']);

そうすれば、あなたは$test[0]「1」になり$test[1]、「テスト 1」になります。

于 2012-08-13T00:32:51.707 に答える
3

できません; その情報はサーバーに送り返されません。最初に HTML をどのように生成したかを確認し、そこからテキストを取得する必要があります。

于 2012-08-13T00:23:14.160 に答える
1

送信されないため、取得する唯一の方法は、PHP コードで値をタイトルにマッピングする配列を使用することです。

于 2012-08-13T00:23:11.117 に答える
0

残念ながら、フォームと変数を送信すると、その値である 1 つのパラメーターしか取りません。値を作成する必要があります。PHP スクリプトに値を渡すために、値をテストします。value="1" の目的は何ですか?おそらく別の属性で使用できますか?

于 2012-08-13T00:25:28.083 に答える
0

私は経験豊富なphpプログラマーではありませんが、SELECTタグで選択された値をphpで確認できます。できないと言う理由がわかりません。

if ( $_POST['test'] == 1) 
{ do something } 
else 
{ option value 2 is selected, do something else }

これはうまくいくと確信しています。

于 2013-09-01T15:57:47.800 に答える
0

選択したオプションのテキストは、HTML フォームを介して渡されません。テキストが必要な場合は、それをページの非表示の HTML 入力に格納するか、値をìdテキストに変換するビジネス ロジックを PHP コードに追加する必要があります (switch ステートメントを使用するか、データベースなど)

于 2012-08-13T00:24:04.877 に答える