我有示例表date_table,作为数据过滤器的基础 2列 - day和day_of_week 我在SQL中查询
select distinct day_of_week,day from date_table
order by day_of_week
没问题
day_of_week day
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
然后我在PHP中的选择框中实现它,所以我可以选择值
$query = "
select distinct day_of_week,day from date_table
order by day_of_week
";
$res = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
$option = '';
while($row = mysql_fetch_array($res))
{
if(!empty($_REQUEST["sday"]))
{
if($row['day_of_week'] == $_REQUEST["sday"])
$option .= '<option value = "'.$row['day_of_week'].'"
selected="selected">'.$row['day'].'</option>';
else
$option .= '<option value =
"'.$row['day_of_week'].'">'.$row['day'].'</option>';
}
else
$option .= '<option value = "'.$row['day_of_week'].'">'.$row['day'].'</option>';
}
选择框
<select name="sday" class="sday">
<option value="">Select Day</option>
<?php echo $option; ?>
</select>
结束结果就像
Monday
Friday
Saturday
Sunday
Thursday
Tuesday
Wednesday
当我选择值“星期一”时,一切都很好。它传递值“1”
当我选择“星期二”时,它选择值2,3和7.与星期三和星期日相同。
很少有其他选择框,使用相同的想法,工作正常。 没有数据重复。
可能是什么问题?
答案 0 :(得分:1)
你有没有试过
ORDER BY day_of_week ASC
您可能希望重新构建代码,但
$selectedString = ($row['day_of_week'] == $_REQUEST["sday"]) ? ' selected ' : '';
<option value = "<?php echo $row['day_of_week'];?>" <?php echo $selectedStr;?> ><?php echo $row['day'];?></option>'
答案 1 :(得分:0)
您使用变量$option5
,而不是$option
答案 2 :(得分:0)
试试这段代码:
if(!empty($_REQUEST["sday"]))
{
if($row['day_of_week'] == $_REQUEST["sday"])
{
$option .= '<option value = "'.$row['day_of_week'].'"
selected="selected">'.$row['day'].'</option>';
}
else
{
$option .= '<option value ="'.$row['day_of_week'].'">'.$row['day'].'</option>';
}
}
else
{
$option .= '<option value = "'.$row['day_of_week'].'">'.$row['day'].'</option>';
}
它更清洁,你不会有支架问题
答案 3 :(得分:0)
我不明白。为什么不这样做(数组甚至不需要,但是嘿)......
<select>
<?php
$days = array('monday','tuesday','wednesday','thursday','friday','saturday','sunday');
for($i=0;$i<count($days);$i++){
echo "<option>$days[$i]</option>\n";
}
?>
</select>