php - 提交表单后下拉选项未保持选中状态

标签 php html

我正在尝试清理搜索 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/

相关文章:

php - 将自定义 header 放在自己的行中

html - 无法在 <a> 上放置背景颜色

javascript - 如何在激活外部 div 时禁用底层 div 上的所有内容

html - 如何添加将所有其他数据向下推的固定横幅?

php - laravel 6 在运行测试后在测试环境中声明

php - 在 Laravel 中将信息添加到数据库而不丢失旧信息

php - 如何在 PDO 中存储变量

html - 是否可以使用 css 将中间 div 包装到下一行

javascript - 如何使用从 SQL 数据库请求的相同数据在 <tr> 中创建链接?

php - 在 Laravel 5.x 中为 trans() 组织本地化文件的好策略是什么?