回声下拉菜单的选项名称比其值更重要

时间:2018-10-08 23:13:04

标签: php foreach dropdown domdocument

我正在尝试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;

对于我的代码,我得到292015292016(无论选择哪个)。如何回显下拉名称AudiBMW

谢谢!

3 个答案:

答案 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"

可能会使验证变得更加困难,但这应该可以为您提供所需的信息。