2012-02-09 76 views
1

我已經創建了一個具有下拉列表的html表單。如何從一個下拉在PHP中獲取值和ID?

該下拉列表從數據庫填充。

<select name="classes"> 
<?php 
foreach() { 
?> 
<option value="<?php echo $id ?>"><?php echo $name ?></option> 
<?php 
} 
?> 
</select> 

現在我想獲得$ id和$ name兩個。我將如何做到這一點?

我已經試過這

echo $_POST['classes']; 

但它只顯示選擇項目的$ ID。我想要$ id和$兩個名字。

+0

只的標識選定的選項將被髮送。關鍵在於ID用作名稱的別名,因此知道ID應該足以讓您知道名稱。 – xbonez 2012-02-09 06:38:55

+1

我你需要兩個,你必須使用JavaScript來改變發佈請求。 – JRL 2012-02-09 06:42:08

+0

但我需要兩者。如何獲得身份證和姓名?在PHP中可能嗎? – Ahmad 2012-02-09 06:43:51

回答

4

你不能爆炸的名字。一種可能性是將兩者的相關信息的value屬性裏面,然後將它們與PHP再次分離(通過使用一個分隔符):

<option value="<?php echo $id.'|'.$name; ?>"><?php echo $name ?></option> 

在PHP:

$datas = explode('|',$_POST['classes']); 
$id = $datas[0]; 
$name = $datas[1]; 

但是,這不是系統如何是爲了。通常$ name只會被用作用戶的「友好」信息,因爲這個值有時可能只是一個INT,而用戶不會理解這個int所指的是什麼,所以我們給他一個詞的描述以便選擇一個選項:但是你只關心的是這個值,你可以隨時用它來重新獲得與它一起的描述(通過搜索數據庫,例如)

0

發送表單意味着只爲選擇字段發送'值'(在選項中僅將'name'作爲標籤)。如果在處理表單提交時有'id',您可以簡單地從數據庫中獲取'名稱'。

1

追加名稱標識,並把它作爲價值,,並從另一端

1

就我而言知道,當你提交表格時,只有價值會被結轉。如果沒有值,則內部HTML將成爲值。

我會做的是:

<select name="classes"> 
<?php 
foreach($classes as $id => $name) //i'm guessing here, is this what you meant? 
{ ?> 
<option value="<?php echo $id.'|'.$name ?>"><?php echo $name ?></option> 
<?php } ?> 
</select> 

如果你不熟悉,週期是連接運算符。把它看作是一串字符串的膠水。因此,我將$ id粘貼到「pipe」的左側,然後將$ name粘貼到最後。 然後在您的處理程序中,使用split或explode來分隔管道上的兩個值。

其實,我會做一點不同,回聲更多,進出php/html更少,但我試圖儘可能保持完整的代碼。

+0

我太慢了。其他人發佈與我一樣的答案。 :-) – TecBrat 2012-02-09 06:50:56

1

你想要的是和名稱都如此,而存儲選項值, 把這樣

<option value="<?php echo $id."_".$name;?>"><?php echo $name?></option> 

和發佈數據只是爆炸,你會得到雙方的價值和名字