选择中的选项在重新加载时消失

时间:2011-03-24 15:26:25

标签: php

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

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

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

*它特别没有t work in IE8, wasn在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>";
}
?>

2 个答案:

答案 0 :(得分:1)

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

<强>更新

<option value='" . $data['F_BRISID'] . "' selected '>" . $data['F_BRISTITLE'] . "</option>"

...将呈现为:

<option value='blah' selected '>blah</option>

这是我唯一关注的错误,但是HTML validator应该找到它们。另外,我建议您使用以下语法:

<option value="blah" selected="selected">blah</option>

答案 1 :(得分:1)

像这样的构造

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

非常浪费空间并迫使你复制一大块html,其唯一区别是“selected”属性。为什么不这样做:

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