0

我目前正在制作注册表并通过 $_POST 粘贴所有元素,如下所示:

<input type="text" placeholder="Your username" name="username" value="<?php echo @$username; ?>">

我的问题是我想制作一个选择列表

<select name="Icecream Flavours">
    <option value="double chocolate">Double Chocolate</option>  
    <option value="vanilla">Vanilla</option>    
    <option value="strawberry" selected>Strawberry</option> 
    <option value="caramel">Caramel</option>
</select>

并粘贴所选参数,就像我将粘贴上面输入字段中的输入文本一样。

我设法通过列表做到了,但它看起来很乱,有时不适用于所有浏览器。

4

1 回答 1

2

你的第一行代码应该是:

<input type="text" placeholder="Your username" name="username" value="<?php echo isset($_POST['username'])?$_POST['username']:null; ?>">

使用 surpressor 运算符@是一种过度杀伤,并且会无缘无故地减慢您的脚本速度。

对于您的选择字段,我会将值存储在一个数组中,然后对其进行循环并将该$_POST值与每个数组条目进行比较,如果true添加selected到选项输出。

所以你的代码变得有点像这样

<?php

$myOptions = array(
    'double' => 'Double chocolate', 
    'vanilla' => 'Vanilla', 
    'strawberry' => 'Strawberry'
    /* and so on */
);

?>

<select name="Icecream_Flavours">

<?php

foreach($myOptions as $key => $opt) {
   $selected = (!isset($_POST['Icecream_Flavours']) || $key != $_POST['Icecream_Flavours'])?null:' selected';

   echo '<option value="' . $key . '"' . $selected. '>' . $opt . '</option>';
}

?>

</select>
于 2013-11-01T10:04:11.247 回答