我正在尝试echo
所选下拉列表的名称而不是其值。我了解echo
通过执行以下操作可以实现下拉列表的值:
$variable = $_POST['vehicleStyle'];
echo $variable;
其中vehicleStyle
是<select>
的名称。
但是,我不是在value
之后,而是在选项名称之后。
这是我的PHP。我正在从XML文档中提取数据,其中$k
等于选项名称,$v
等于其值。
<html>
<body>
<?php
$xml = file_get_contents('note.xml');
$dom = new DOMDocument();
$dom->loadXML($xml);
?>
<form action="additionalinfo.php" method=POST>
<select name="vehicleStyle">
<option selected="selected">Choose style</option>
<?php
foreach ( $dom->getElementsByTagName('style') as $styletwo ) {
$styleid = $styletwo->getAttribute("name");
$styleData [$styleid]= $styletwo->getAttribute("id");;
}
foreach ($styleData as $k=>$v){
?>
<option value='<?php echo $v;?>'><?php echo $k;?> </option>
<?php
}
?>
</select>
<br>
<button class="button">Submit</button>
</form>
</body>
</html>
这将输出一个包含两个值的下拉列表:“ Audi => 292015”和“ BMW => 292016”。如果我添加
$variable = $_POST['vehicleStyle'];
echo $variable;
对于我的代码,我得到292015
或292016
(无论选择哪个)。如何回显下拉名称Audi
或BMW
?
谢谢!
答案 0 :(得分:1)
只需将选项的value
更改为$k
即可
<option value='<?php echo $k;?>'><?php echo $k;?> </option>
答案 1 :(得分:1)
如果您只需要文本而不是数字,则不要在选项中包括数字作为值。
<option><?php echo $k;?></option>
If you don't specify a value attribute, the text will be used as the value by default.
如果您需要同时获取文本和值,则有各种建议here。
答案 2 :(得分:1)
怎么样...
<option value='<?php echo $v . '|' . $k;?>'><?php echo $k;?> </option>
然后
$variable = $_POST['vehicleStyle'];
$variable = explode('|', $variable);
echo $variable[0]; //The "value"
echo $variable[1]; //The "text"
可能会使验证变得更加困难,但这应该可以为您提供所需的信息。