2011-07-20 55 views
8

我想要在<option>標記中獲取文本以及其值。從<option>獲取文本使用PHP標記

<select name="make"> 
<option value="5"> Text </option> 
</select> 

我用$_POST['make'];和我得到的值5但我想同時獲得價值和文本

我該如何使用PHP?

回答

3

將文本的值設置爲選項標記的值,通過靜態HTML標記或者即使它由服務器端腳本生成。您只需將通過POST獲取的價值屬性

另一種選擇然而,在服務器端,是映射值(「5」),關聯數組,即

<?php 
$valueTextMap = array("5" => "Text"); 

$value = $_POST['make']; //equals 5 
$text = $valueTextMap[$value]; //equals "Text" 
?> 
1

你需要包括在值文本開始(如:<option value="5_Text"> Text </option>,然後解析,或...

你可以使用JavaScript的網頁上提交的文本作爲POST操作的另一個PARM

2

在。爲了使用PH來獲得標籤和價值P,你需要將這兩個參數作爲值的一部分。

例如:

<select name="make"> 
    <option value="Text:5"> Text </option> 
</select> 

PHP代碼

<?php 
$parts = $_POST['make']; 
$arr = split(':', $parts); 

print_r($arr); 

輸出:

Array(
    [0] => 'Text', 
    [1] => 5 
) 

這是做這件事。

+1

對於這件事的所有迴應,我認爲這是最優雅的一個。將這樣做 –

4

這是怎麼回事?我認爲這是最好的解決方案,因爲您已將字段分隔到每個數據。只有一個隱藏字段會在每次更改時更新並避免硬編碼映射。

這裏面HTML:

<select name='make' onchange="setTextField(this)"> 
<option value = '' selected> None </option> 
<option value = '5'> Text 5 </option> 
<option value = '7'> Text 7 </option> 
<option value = '9'> Text 9 </option> 
</select> 
<input id="make_text" type = "hidden" name = "make_text" value = "" /> 
<script type="text/javascript"> 
    function setTextField(ddl) { 
     document.getElementById('make_text').value = ddl.options[ddl.selectedIndex].text; 
    } 
</script> 

這裏面PHP:

<?php 
$value = $_POST["make"]; 
$text = $_POST["make_text"]; 
?> 
+0

謝謝你這行'document.getElementById('make_text')。value = ddl.options [ddl.selectedIndex] .text;' – robert

0

我一直用了一個很優雅的解決方案,類似於已經介紹的那些,這並不需要很多的附加代碼。

HTML

<select name="make"> 
    <option value="1:First Option">First Option Text</option> 
    <option value="2:Second Option">Second Option Text</option> 
    <option value="3:Third Option Text">Third Option Text</option> 
</select> 

PHP這種方法的

$value = split(':', $make)[0]; 
$text = split(':', $make)[1]; 

優勢
是的,有一定的相似之處serialworm的答案,但我們儘量減少我們的PHP代碼通過不顯眼地轉換爲數組並選取元素來阻止馬上要求。

在我的情況下,我在聯繫表單中使用了這個確切的短代碼,其中這一行代碼(以獲取選定的部門名稱)對於保持代碼清潔至關重要。