我需要根据许多条件在PHP下拉菜单中设置项目。
这是我的代码:
<select class="span3" id="filter-source">
<option selected="selected">Select source</option>
<?php
if (($_SESSION['val1']==="value")||($_SESSION['id']==5)) {
echo '<option';
if ($val2 == "Something"){
echo 'selected="selected"';
}
echo'Something</option>';
}
?>
</select>
所以我正在做的是仅在会话变量的两个条件之一为真时才在选择下拉列表中显示该选项。选择"某物"后$val2
将其设置为某物,并在刷新页面时在选择下拉菜单中显示为所选选项。
这不会导致服务器错误,但即使满足会话变量的条件,该选项也不会显示。
我做错了什么,正确的方法是什么?
在我看来
,您没有关闭<option>
标签,我在"某事"之前添加了结束>:
<select class="span3" id="filter-source">
<option selected="selected">Select source</option>
<?php
if(($_SESSION['val1']==="value")||($_SESSION['id']==5))
{
echo '<option';
if ($val2 == "Something") {
echo 'selected="selected"';
}
echo '>Something</option>';
}
?>
</select>
我还想提供以下一段更干净的代码:
<?php
if(($_SESSION['val1'] === "value") || ($_SESSION['id'] == 5))
{
echo '<option' . (($val2 == "Something") ? 'selected="selected"' : '') . '>Something</option>';
}
?>
<select class="span3" id="filter-source" autocomplete="off">
<option selected="selected">Select source</option>
<?php if( $_SESSION['val1']==="value" && $_SESSION['id']==5) { ?>
<option <?php if($_SESSION['val1'] === "value" && $_SESSION['id'] ==5) {echo 'selected="selected"';} ?>> Something</option>
<?php }?>