无法在PHP函数的下拉框中设置所选值

时间:2018-02-18 13:31:15

标签: php mysql html5

我的表单上有一个下拉框,它是从MySQL数据库中填充的。选择值时,我想打开一个更大的表单,并将最初选择的值设置为新表单上的选定值。

我的Combo的HTML代码如下

<select id ="Opponents" name ="Opponents"
    <?php 
       opponent_load(Wheathill)
    ?>
    >
</select> 

PHP函数用于填充下拉列表以及设置要显示的SELECTED值,如下所示;

    function opponent_load($oppt){
      $db_handle = mysqli_connect(DB_SERVER, DB_USER, DB_PASS );
      $database = "matchmanagementdb";
      $db_found = mysqli_select_db($db_handle, $database);
      if ($db_found) {
          $SQL = "SELECT * FROM opponentsdb";
          $result = mysqli_query($db_handle, $SQL);
          while ( $db_field = mysqli_fetch_assoc($result) ) {
            $uName = $db_field['Opponents'];
            if ($uName == $oppt) {
                $selected = 'selected="selected"';
            } else {
                $selected = '';
            }
     echo "<option value='$uName' '$selected'> $uName </option>";
     }
     } else {
            print "Database NOT Found ";
     }
     mysqli_close($db_handle);
     }

新表单在下拉框中有值但是所选值不显示为Wheathill。我打算用一个将在另一个函数中定义的变量替换函数参数“Wheathill”。 任何人都可以帮助解释为什么代码确实有效。

上面的代码是更大代码的一部分,其中包含对mysqli_connect()函数所需值的引用

注意PHP的新手。

1 个答案:

答案 0 :(得分:0)

您的错误如下:

首先,您需要在关闭opponent_load(Wheathill)后致电> 。目前,它是无效标记,浏览器会尝试修复它,但它仍然无效。

<select id ="Opponents" name ="Opponents">
    <?php  opponent_load(Wheathill); ?>
</select> 

其次,当您将字符串传递给函数时,它合理将字符串括在引号中。

<select id ="Opponents" name ="Opponents">
    <?php  opponent_load('Wheathill'); ?>
</select> 

第三个 - 正在输出<option>

echo "<option value='$uName' '$selected'> $uName </option>";

如果你把$selected = 'selected="selected"';放在这里,你会得到:

<option value='$uName' 'selected="selected"'> $uName </option>

这绝对是一个无效的标记。解决方案是 - 删除引号:

echo "<option value='$uName' $selected> $uName </option>";

变为:

<option value='$uName' selected="selected"> $uName </option>

这是正确的。