2011-04-13 77 views
3

我有一個簡單的PHP陣列名爲$類,看起來像這樣:PHP數組和HTML格式下拉列表

Array 
(
[Closed] => P1000 
[Open] => P1001 
[Pending] => P1002 
[In Progress] => P1003 
[Requires Approval] => P1004 
) 

我有,有一個下拉列表,一個領域一個簡單的HTML表單我想使用數組作爲選項,但是我只希望它顯示文本(例如Closed,Open,Pending,In Progress和Requires Approval)作爲下拉列表中的選項,但存儲該選項的關聯密鑰(例如P1000,P1001等),然後在提交表單時將其作爲POST值發送。

表單域的HTML到目前爲止是:

<select name="category_id"> 
<option value=""></option> 
<?php foreach($categories as $category) {$category = htmlspecialchars($category);?> 
<option value="<?php echo $category; ?>"><?php echo $category; ?></option> 
<?php 
} 
?> 
</select> 

我可以讓它顯示無論是文字或標識的,但不是文本並存儲ID。希望這是簡單的,有人可以指引我正確的方向。

非常感謝, 史蒂夫

回答

5

您忘記了$ value標籤。您兩次粘貼分類名稱,而不是價值。你應該這樣做:

<select name="category_id"> 
<option value=""></option> 
<?php 
    #        !vCHANGEv! 
    foreach($categories as $category => $value) 
    { 
     $category = htmlspecialchars($category); 
     echo '<option value="'. $value .'">'. $category .'</option>'; 
    } 
?> 
</select> 
+0

感謝Robik和其他指出同樣的事情的人 - 沒有獲得數組中每個值的關鍵字。現在一切都很好。非常感謝大家。 – 2011-04-13 16:37:36

+0

你知道你可以接受答案嗎? ;) – Robik 2011-04-13 16:43:38

0

正如你必須包括鍵和值都關鍵是要顯示POST

<?php foreach($categories as $key => $category) { 
    $category = htmlspecialchars($category);?> 
    <option value="<?php echo $category; ?>"><?php echo $key; ?></option> 
<?php 
} 
?> 
0

您還沒有在foreach循環鍵文本和值

foreach($categories as $id=>$category){ 
    $category = htmlspecialchars($category); 
    echo "<option value="{$id}">{$category}</option>"; 
} 
0
foreach($categories as $category => $category_id) 

是你在找什麼。

0
<select name="category_id"> 
<option value=""></option> 
<?php 
$keys = array_keys($categories); 
for($i=0; $i<count($categories); $i++) 
{?> 
    <option value="<?php echo $keys[$i]; ?>"><?php echo $categories[$i]; ?></option> 
<?php 
} 
?> 
</select> 

假設$ categories是上面顯示的數組。