我有一个由11个元素组成的表单(输入和选择标签) . 表单具有表单验证,当用户输入错误数据时,该表单验证会在字段旁边提示错误消息 . 我希望在刷新页面后保持输入到字段中的正确数据 .
例如,假设正确填充的10个字段和1个字段不正确 . 当用户按下提交按钮时,字段附近会显示错误消息 . 我想要做的是保持选择10个正确的值,这样用户就不必重新开始了 .
对于输入元素,这工作正常,但对于选择元素,这是行不通的 . Important is that I am populating the drop down list dynamically with PHP.
这有可能在PHP中做,因为我无法弄清楚如何?
下面是我如何生成select元素的下拉列表的示例 .
select name="location">
<?php
include("../includes/db_connect.php");
$sql_loc = "SELECT description FROM location ORDER BY description ASC";
$result_loc = mysqli_query($connection, $sql_loc);
if(mysqli_num_rows($result_loc) > 0){
while($row = mysqli_fetch_assoc($result_loc)){
echo '<option value="' . htmlspecialchars($row['description']) . '">'
. htmlspecialchars($row['description'])
. '</option>';
}
}
?>
</select>
至于输入元素,我使用以下方法实现此目的:
<input type="text" name="serial" value="<?php echo $serial;?>">
4 回答
编辑并尝试:
是的,可以通过在选项元素上使用selected属性来保持选定的值 .
例如,下面的
<option>
标记包含该属性:如果您关心XHTML验证,请使用
selected="selected"
- 有关详细信息,请参阅this answer .在<select>的MDN文档的examples section中,列出了以下HTML:
使用PHP渲染选择列表
要使用PHP代码实现此目的,需要将 selected 属性有条件地添加到选项中 .
首先,在while循环之前,将选定的位置存储在变量中:
然后在while循环中,在找到匹配选项时设置所选属性(即
$selectedLocation == $row['description']
时) .请参阅this phpfiddle中对此的解释 .
试试这个:
如as duplicate linked question中所述,
selected
属性用于标记已提交的选项 .selected
属性解决了使选定值可见的问题 .此外,您的代码可以通过以模块化方式将select元素数据绑定到(SQL)数据中而受益 .
让我们不关心检索数据的时刻,只是说它们来自 Generator :
这个小函数返回一个select元素的HMTL,其数据来自 Generator ,选择一个现有值(如果是选项的一部分) .
将它与任何生成器(例如,从数据源)组合,可以轻松地将其放入表单模板脚本中:
因此,如果你有10个选择,这很容易采用 . 正如您所知道的数据库连接被传递给
datasource
函数,看看该函数实际上做了什么会很有趣 . 这个功能更简单:它查询数据库连接上的查询(它与您的示例中的's a different way of writing as in your code, but it'相同)然后迭代结果(如果有结果) . 然后产生每个选项值 .
yield
是一个特殊的形式,从函数返回创建 Generator ,在select
函数中用于输出,通过在foreach
循环中使用 Generator . 每个屈服都成为 Generator 的一次迭代 .我希望这能说明如何将代码划分为函数 . 更改的值应放入变量中 . 通过创建函数和使用这些值的参数可以轻松完成此操作 . 您可以根据自己的特殊需求扩展语言,例如创建选择元素 .