2011-08-15 89 views
0

如果我有這樣一個組合框:PHP發佈一個組合框的值

<select name="gender"> 
<option value="M">Male</option> 
<option value="F">Female</option> 
</select> 

所以,當我發佈使用:

$gender = $_POST['gender']; 

我會得到M或F作爲結果爲$性別,我如何同時獲得M,F和男性,女性?

+4

你爲什麼想兩者兼而有之?另外,不,你不能; 'post'ed值是所選的一個。 – Bojangles

+0

我希望兩者都是因爲和M或F將寫入數據庫,但男性或女性將顯示在屏幕上供用戶選擇。性別只是一個例子,我在組合框裏有100個項目的列表,並且在php上寫出每個項目也不明智,所以只考慮是否有可能獲得顯示值部分。 – PlayKid

+0

我同意JamWaffles,再加上你會如何引用第二個值?關鍵字'gender'只能包含一個值,除非您將數據重新格式化爲使用Javascript的數組,這似乎很奇怪,因爲您只需在服務器端執行一些操作以基於短版本獲取長版本。 – DaveRandom

回答

5

正如JamWaffles所說,沒有簡單的方法來做到這一點。

但是,怎麼做,如果你必須有幾個選擇:

  • 選項1 - 使用jQuery張貼的形式爲您服務。您可以獲得組合框的 val()(「M」/「F」)以及html()值 (「男性」/「女性」)。

  • 選項2 - 將值設置爲類似value="M|Male"然後 使用explode()分別獲得每個值(「M」 /「男」)。

  • 選擇3 - 只需使用一個簡單的,如果貼頁/ else語句 - if($val == "M") $gender = "Male";

+0

看起來像選項1更適合我的選擇,因爲我使用jQuery來完成發佈,讓我試試看看會發生什麼...... – PlayKid

+0

選項2是一個整潔的解決方案,很好地完成 –

+1

如果你確實去了與選項1,不要忘記,沒有啓用JavaScript的人將無法提交您的表單。我會推薦選項2或3. – Prisoner

1

男性和女性是簡單的顯示值,也被公佈的實際值是M或F.您可以在服務器端使用一個簡單的

if $_POST['gender'] == "M" { $fullGender = "Male" } else { $fullGender = "Female" } 

,或者一個新的隱藏字段添加到表單和更新它,當性別選擇框中的變化,即

$(function() { 
    $("[name=gender]").change(function() { 
     $("#fullGender").val($(["[name=gender] option:selected").text()); 
    }); 
} 

(和形式)

<input type="hidden" name="fullGender" id="fullGender"/> 
+1

我不會推薦隱藏字段;在這種情況下做服務器端更好。 – Bojangles

相關問題