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