2010-10-23 47 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元素。这些信息将与提交的表单数据一起传递。不是最安全或可靠的选择,但是是一种选择。