我的表单上有一个下拉框,它是从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的新手。
答案 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>
这是正确的。