在表单提交后下拉选择未保留选中状态

时间:2017-02-08 09:56:01

标签: php html

我正在尝试清理搜索mysql webform,以便所有函数(以及许多函数)驻留在外部文件中,在表单页面中使用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”,但是只是没有发生。

任何人都可以看到我做错了什么或者没有试图让这个工作吗?

1 个答案:

答案 0 :(得分:2)

改变你的状况:

if ($sbmtd == 1 && $searchTech == $t) {
      echo " selected";
    }