如何通过 php 回显值和名称

How to echo value AND name via php

我有一个带有 select 方框的表格,如下所示:

<select name="damage">
    <option value="100 Euro">Exhaust</option>
    <option value="200 Euro">Brakes</option>
</select>

提交后,我想像这样通过回显显示 'name' 和 'value':

"You selected Exhaust, this will cost you approximately 100 Euro."

那么,我怎样才能回显 select 的 'name' 和 'value'?

谢谢。

理想情况下应该是:

   <select name="damage">
     <option value="100">Exhaust</option>
     <option value="200">Brakes</option>
   </select>

而且我假设您想在选择更改时在浏览器的某个位置显示该消息。你不需要 PHP。您可以使用 jQuery.

$('select[name="damage"]').on('change', function(){
    var result = "You selected" + $(this).find('option:selected').text() +", this will cost you approximately " + $(this).val() + " Euro."
});

很遗憾,您的 POST 只能 post 输入的值。然而,通常解决这种情况的方法是在代码中定义这些值-显示文本关系。

因此您可能在 PHP 中定义了一个数组,如下所示:

$damage_options = array(
    '100 Euro' => 'Exhaust',
    '200 Euro' => 'Brakes'
);

您可以使用此数组动态生成 select 输入并匹配结果 POST 上的键值。

不过我可能会说,在这种情况下,您的价值观没有多大意义。如果您有两种具有相同成本值的损坏怎么办?也许更有意义的做法是简单地对选项中的值和显示使用相同的字符串(即 'Exhaust'、'Brakes')等)并将成本值放入数组中,如下所示:

$damage_options = array(
    'Exhaust' => '100 Euro',
    'Brakes' => '200 Euro'
);

这样您就可以根据 select 造成的伤害来查找成本,而不是相反。

使用第二种数组类型,当表单被 posted 时,回显值将如下所示。

if (!empty($_POST['damage'])) {
    $damage_type = $_POST['damage'];
    if(array_key_exists($damage_type, $damage_options)) {
        echo 'You selected ' . $damage_type . ', this will cost you approximately ' . $damage_options[$damage_type];
    } else {
        // damage type doesn't match any key in array
        //perhaps give error message
    }
} else {
   // no damage value was posted
   // perhaps give error message or do something else
}