-1

我有一个包含这些值的选择框:

<form action="ampcontrols.php" method="post" name="amp">
<select name="amp">
<option value="Fender '57 Deluxe","103">Fender '57 Deluxe</option>
<option value="Fender '59 Bassman","100">Fender '59 Bassman</option>
<option value="Fender '57 Champ","124">Fender '57 Champ</option>
<option value="Fender '65 Deluxe Reverb","83">Fender '65 Deluxe Reverb</option>
<option value="Fender '65 Princeton","106">Fender '65 Princeton</option>
<option value="Fender '65 Twin Reverb","117">Fender '65 Twin Reverb</option>
<option value="Fender Super-Sonic(Burn)","114">Fender Super-Sonic(Burn)</option>
<option value="British '60s","97">British '60s</option>
<option value="British '70s","121">British '70s</option>
<option value="British '80s","94">British '80s</option>
<option value="American '90","93">American '90s</option>
<option value="Metal 2000","109">Metal 2000</option>
</select>
<input name="submit" type="submit" value="Submit" />
</form>

我希望能够获得 2 个值并独立使用它们。这是一个选择框而不是多个。我可以回显选定的名称,即 Fender '57 Deluxe 的 HTML 标签没问题,但还需要传递它的相应编号以单独插入到 xml 文件中。即选择 Fender '57 Deluxe 作为标题和 103 作为 xml 的 id。我尝试过使用 MySQL、XML,但一次只能传递一个值!!我可能错过了一些简单的东西。干杯

4

2 回答 2

0

您的 HTML 无效。

要将多个值放在单个选项上,您可以使用数组或对象

使用数组的示例

<select name="amp">
    <option value='["Fender &apos;57 Deluxe","103"]'>Fender '57 Deluxe</option>
</select>

PHP 代码

<?php
$amp = json_decode($_POST['amp']);
$amp[0] // Fender '57
$amp[1] // 103
?>
于 2012-11-12T15:39:13.673 回答
0

如果我猜对了,每个标题都由其 id 标识,并且您可以控制 html 以及 PHP 中的处理。在这种情况下,您不需要将标题传递回 PHP 处理部分;您只需要在 HTML 中显示它们,这样用户就可以选择“Fender '59 Deluxe”而不是“103”。

因此,只需确保您的 PHP 知道哪个 id 与哪个标签一起使用,然后您就可以将标签显示给用户,并将 id 显示给 PHP/XML。

<?php
  // This array would typically be pulled from a database
  $amps = array(
    103 => "Fender '57 Deluxe",
    100 => "Fender '59 Bassman",
    124 => "Fender '57 Champ",
    83 => "Fender '65 Deluxe Reverb",
    106 => "Fender '65 Princeton",
    117 => "Fender '65 Twin Reverb",
    114 => "Fender Super-Sonic(Burn)",
    97 => "British '60s",
    121 => "British '70s",
    94 => "British '80s",
    93 => "American '90",
    109 => "Metal 2000"
  );

  // Check if the form has been submitted
  if (isset($_POST['amp'])) {
    $selected_amp = intval($_POST['amp']);
    if (array_key_exists($selected_amp, $amps)) {
      $label = $amps[$selected_amp];
      insert_xml($selected_amp, $label);
      // (todo: create function insert_xml)
    } else {
      // (todo: error handling)
    }
  }
?>
<form action="ampcontrols.php" method="post" name="amp">
  <select name="amp">
  <?php foreach ($amps as $id => $label): ?>
    <option value="<?php echo $id; ?>"><?php echo htmlentities($label); ?></option>
  <?php endforeach; ?>
  </select>
  <input name="submit" type="submit" value="Submit" />
</form>

如您所见,我喜欢在 HTML 中对 PHP 使用 foreach/endforeach;如果您愿意,当然可以使用大括号。

于 2012-11-13T10:10:52.753 回答