2010-10-23 45 views
1

選項的值和文本比方說,我有一個HTML表單: 美國 CDN 我選擇選項1(美國) 然後PHP頁面 好,真不錯,做工精細和回聲的「1」 我怎樣才能顯示「USA」?所以實質上,我想傳遞選項的TEXT。我怎麼能這樣做?獲取與PHP

回答

0

我建議你有一份你用來打印表格的相同數據結構。

例如,如果你做這一切在一個PHP頁面...

<?php 
$countries=array('USA','CDN'); 
?> 
<form action='?' method='post'> 
    <select name='country'><?php 
    foreach($countries as $key=>$country){?> 
     <option value='<?php echo $key;?>'><?php echo $country;?></option> 
    <?php 
    } ?> 
    </select> 

    <input type='submit'> 
</form> 

<?php 
if(isset($_POST['country'])){ 
    $chosen=(int)$_POST['country']; 

    if(!isset($countries[$chosen])){?>Unknown country selection, wtf<?php exit; }?> 

    <div style='margin-top:20px;'>You selected <?php echo $countries[$chosen];?></div> 

<?php } 

另一種選擇是完全拋棄了數值,只需使用國名作爲選項的值。但是,爲了驗證,您仍然需要值的列表。檢查的差異在這個例子...

<?php 
$countries=array('USA','CDN'); 
?> 
<form action='?' method='post'> 
    <select name='country'><?php 
    foreach($countries as $country){?> 
     <option value='<?php echo $country;?>'><?php echo $country;?></option> 
    <?php 
    } ?> 
    </select> 

<input type='submit'> 
</form> 

<?php 
if(isset($_POST['country'])){ 
    $chosen=preg_replace('/[^\w]/','',$_POST['country']);//this isn't strictly necessary, since the next line checks if the value is in your original array - but filtering input is a good habit! 

    if(!in_array($_POST['country'],$countries)){?>Unknown country selection, wtf<?php exit; }?> 

<div style='margin-top:20px;'>You selected <?php echo $chosen;?></div> 

<?php } 
+0

打多寶寶格式化 – 2010-10-23 05:17:28

+0

@bemace唉,格式化似乎不是我的強項! – JAL 2010-10-23 05:20:10

+0

我的選擇下拉列表是從一個數據庫動態填充的,該數據庫已經預填充了數千行數據,全部使用數字ID。該表單有5個與用戶輸入相關的選擇元素,因此select 1會獲得一個新選項,select 2將重新填充ajax調用。所以這5個選擇都是基於數據庫中的數字ID。我只需要一種方法在表單發佈後在echo語句中顯示選項文本,以便用戶可以看到他們選擇的內容,並且此時我無法重新格式化所有內容。 – 2010-10-23 05:27:54

2

您需要將HTML頁面上的選項值更改爲要顯示的文本(引起XSS安全隱患),或者在顯示文本的頁面上,您需要一個數組,其中包含所有值與論壇輸入相匹配。

例: $names[1] = "USA"; $names[2] = "CDN"; 然後,當你想要顯示它,你會打電話給$names[$selection]輸出的文本。

您可以考慮的另一種選擇是在用戶進行選擇(使用onUpdate)時使用javascript更新提交頁面上隱藏的HTML元素。這些信息將與提交的表單數據一起傳遞。不是最安全或可靠的選擇,但是是一種選擇。