我目前正在制作注册表并通过 $_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>
并粘贴所选参数,就像粘贴上面输入字段中的输入文本一样。
我设法通过列表完成了它,但它看起来很混乱,有时不适用于所有浏览器。
Yoor 的第一行代码应该是:
<input type="text" placeholder="Your username" name="username" value="<?php echo isset($_POST['username'])?$_POST['username']:null; ?>">
使用增压器运算符@
是一种矫枉过正,并且会无缘无故地减慢脚本的速度。
对于您的选择字段,我会将值存储在一个数组中,然后循环访问它并将$_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>