繁体   English   中英

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

[英]Retain Value of Select Tag after Submit - 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. */ 

是的,您可以使用:

$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不必扫描双引号字符串中的vars),并且始终处理您的信息,这些信息是使用htmlspecialchars从数据库中获得的,因此您不必当不正确的东西被保存到数据库中时,搞砸了你的html

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

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

您可以将发布的值与当前行的ID进行比较。 如果值相同,则添加selected属性。

// create $selected variable to get "selected" or "":
$selected = isset($_POST['teacherID']) && $_POST['teacherID'] == $row['teacherID'] 
          ? 'selected' : '' ;

// add $selected to the <option> tag:
echo "<option value='".$row['teacherID']."' $selected>"
    . $row['Fname'] ." ". $row['Mname'] ." " .$row['Lname'] 
    . "</option>";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM