Php 重新加载时显示“选择”对话框中的选定选项

Php 重新加载时显示“选择”对话框中的选定选项,php,Php,在我的页面中加载后,如果DB表中没有保存任何内容,则会显示所有选项。一旦我做出选择并重新加载页面,所选选项就会从列表中消失,不会在下拉列表中重新加载。相反,它会显示下一个值,该值将取代选定的值 如果我检查SQL语句和$str,它会加载所有选项,除了在$getBris中选择的选项(它有一个值) 是什么原因导致我的选择不显示我选择的选项,而是将其从列表中删除 *它在IE8中不起作用,在Firefox中也不起作用,但现在起作用了 <script src="validation.js" type=

在我的页面中加载后,如果DB表中没有保存任何内容,则会显示所有选项。一旦我做出选择并重新加载页面,所选选项就会从列表中消失,不会在下拉列表中重新加载。相反,它会显示下一个值,该值将取代选定的值

如果我检查SQL语句和
$str
,它会加载所有选项,除了在
$getBris
中选择的选项(它有一个值)

是什么原因导致我的选择不显示我选择的选项,而是将其从列表中删除

*它在IE8中不起作用,在Firefox中也不起作用,但现在起作用了

<script src="validation.js" type="text/javascript"></script>

<html>
<body onLoad="checkSecondValue();">
</body>
</html>
<?php
    //retrieve all the bris for the drop down
include '../../inc/database.php';
// ORDER BY RAND()

$res = BbqcDatabase::getInstance()->doQuery('SELECT * FROM T_TOURNOI_BRIS');
$str = "<select name='ddlBrisSelected' id='ddlBrisSelected' onChange='checkSecondValue()'>";

$getBris = $_GET['bris'];
$getBris = $getBris - 1;
print_r("bris is : "+ $getBris);


if($getBris == null)
{
    $str .= "<option value='' selected></option>";
}
else
{
$str .= "<option value='999'>Choisir un bris</option>";
}

$i = 0;

while($data = mysql_fetch_assoc($res))
{
    if($data['F_BRISID'] == $getBris)
    {
        $str .= "<option value='" . $data['F_BRISID'] . "' selected '>" . $data['F_BRISTITLE'] . "</option>";
    }
    else 
    {
        $str .= "<option value='" . $data['F_BRISID'] . "'>" . $data['F_BRISTITLE'] . "</option>";
    }
    $i++;
}

if($getBris == 12)
{
    $str .= "<option value=12 selected>Autre</option>";
}
else
{
    $str .= "<option value=12>Autre</option>";
}

$str .= "</select>";

echo $str;

if(is_numeric($bris))
{
    echo "<script type=\"text/javascript\">alert('test');checkSecondValue();</script>";
}
?>

使用浏览器的“查看源代码”功能检查正在生成的实际HTML(实际上,这是浏览器所看到的唯一HTML)。看起来您正在插入随机单引号

更新:

<option value='" . $data['F_BRISID'] . "' selected '>" . $data['F_BRISTITLE'] . "</option>"
废话
这是我唯一想指出的错误,但我应该找到所有的错误。此外,我建议您使用以下语法:

<option value="blah" selected="selected">blah</option>
废话
像这样的构造

if($getBris == 12)
{
    $str .= "<option value=12 selected>Autre</option>";
}
else
{
    $str .= "<option value=12>Autre</option>";
}
if($getBris==12)
{
$str.=“Autre”;
}
其他的
{
$str.=“Autre”;
}
非常浪费空间,并迫使您复制一大块html,其唯一区别是“selected”属性。为什么不这样做:

$selected = ($getBris == 12) ? ' selected' : '';
$str .= "<option value=12{$selected}>Autre</option>";
$selected=($getBris==12)?'选定':'';
$str.=“Autre”;

您的HTML代码无效<代码>
不能在
之外。另外,你粘贴的代码缺少doctype定义。我已经做了修改,没有任何变化。我不太确定它是如何修复的,但它现在可以工作了!为什么随机单引号会导致这种情况?Thanks@DavidMachel-HTML规范规定了浏览器必须如何呈现HTML。如果您不遵守规格,浏览器必须猜测,并且没有规则。
$selected = ($getBris == 12) ? ' selected' : '';
$str .= "<option value=12{$selected}>Autre</option>";