提交后保留选择标记的值 - PHP

时间:2018-03-14 20:41:00

标签: php

我正在尝试根据教师的工作量添加主题。我在将用户输入插入工作负载表之前进行了验证,主要用于检测计划冲突。

现在,我想要的是保留用户的选定值,并在验证失败后再次显示。这样用户就不必再次选择主题名称,类名和类顾问了。

我附上了我的代码供选择顾问。

<?php
$link = mysqli_connect("localhost", "root", "", "smis");
$sql = "SELECT * FROM teacherData";
$result = mysqli_query($link,$sql);
echo "<select  id='modalINPUT' name='teacherID' required>";
echo"<option  value=''>Select Adviser</option>";
while ($row = mysqli_fetch_array($result)) 
{	
 echo "<option value='".$row['teacherID']."'>".$row['Fname'] ." ". $row['Mname'] ." " .$row['Lname'] . "</option>";
}
 echo "</select>";
?>

/*
Once validation fails, is there a way where I can display the selected value? 
Like display the name of the teacher.
*/

2 个答案:

答案 0 :(得分:1)

是的,您可以使用:

$teacherID = !empty($_POST['teacherID']) ? $_POST['teacherID'] : '';

在你的SQL查询之前

然后要在选择框中显示所选值,您可以检查发布的ID是否与当前ID匹配,并打印出相应选项字段的所选参数:

echo '<option value="'.$row['teacherID'].'"'.($teacherID == $row['teacherID'] ? ' selected="selected"' : '').'>'.htmlspecialchars($row['Fname']) .' '. htmlspecialchars($row['Mname']) .' ' .htmlspecialchars($row['Lname']) . '</option>';
编辑:查看我编辑的答案 - 使用单引号以获得更好的性能(因此PHP不必扫描双引号字符串以获取变量),并始终处理您使用htmlspecialchars从DB获取的信息,因此您当不正确的东西保存到DB中时,不要弄乱你的HTML

编辑:除非你需要,否则也不要从MYSQL表中选择所有数据。要获得性能,请仅在查询中选择所需的字段:

$sql = 'SELECT teacherID, Fname, Mname, Lname FROM teacherData';

答案 1 :(得分:0)

您可以将发布的值与当前行的ID进行比较。如果值相同,请添加function hideImg() { document.getElementById("image1").style.display = "none"; document.getElementById("close").style.display = "none"; } 属性。

selected