我正在尝试清理搜索 mysql web 表单,以便所有函数(有很多)驻留在外部文件中,用 require(fileName.php);
调用。在表单页面中,希望使主 webform.php 更易于遵循和管理。
我在 searchDb.php 表单页面中有很多下拉菜单,供用户从中选择搜索条件,其脚本均类似于:
<p> <!-- Technician: -->
<label for"Technician:">Technician:</label>
<select name="searchTech" id="searchTech">
<option value="0">-- Select Technician --</option>
<?php
techDDM($searchTech, isset($_POST['submitted']))
?>
</select>
当表单首次加载时,下拉菜单将按预期填充,在本例中通过函数调用 techDDM()
填充。位于:require('dropDownMenu.php');
function techDDM(&$searchTech, $sbmtd) {
// initialize and populate techArr
$techArr = array('First Last1', 'First Last2', 'First Last3', 'First Last4', 'First Last5', 'First Last6', 'First Last7', 'First Last8', 'First Last9');
echo '<br />(' . __LINE__ . ') $searchTech : ' . $searchTech . '<br />'; // output for debug
echo '<br />(' . __LINE__ . ') $sbmtd : ' . $sbmtd . '<br />'; // output for debug
foreach ($techArr as $t) {
echo "<option value='$t'";
if ($sbmtd == 1 && $searchTech == '$t') {
echo " selected";
}
echo ">$t</option>";
}
}
但是在提交表单之后,如果确定用户输入的文本字段之一包含错误,并且用户是否另外从Select Technician
中选择了一个名称。例如,作为附加搜索条件,我打算让用户的下拉菜单保持选中状态,同时提示他们修复键入的错误。不幸的是,selected
用户选择的选项值的属性未包含在 <option
中标记,但满足条件以包含所选属性,如上面粘贴的 HTML 和 PHP 示例呈现的技术人员部分的页面源所示:
<p> <!-- Technician: -->
<label for"Technician:">Technician:</label>
<select name="searchTech" id="searchTech">
<option value="0">-- Select Technician --</option>
<br />(8) $searchTech : First Last1<br /><br />(9) $sbmtd : 1<br /><option value='First Last1'>First Last1</option><option value='First Last2'>First Last2</option><option value='First Last3'>First Last3</option><option value='First Last4'>First Last4</option><option value='First Last5'>First Last5</option><option value='First Last6'>First Last6</option><option value='First Last7'>First Last7</option><option value='First Last8'>First Last8</option><option value='First Last9'>First Last9</option> </select>
<span id="spanSpace"></span>
消息来源显示技术选择:First Last1
确实被选中了,页面也提交了:$sbmtd == 1
,然后应附加 selected
属性为“First Last1”,但这并没有发生。
任何人都可以看到我做错了什么或遗漏了尝试使其正常工作吗?
最佳答案
改变你的条件:
if ($sbmtd == 1 && $searchTech == $t) {
echo " selected";
}
关于php - 提交表单后下拉选项未保持选中状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42109838/