MYSQL PHP选择Order By

时间:2014-02-19 12:38:58

标签: php mysql sql

我有示例表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>
  • 问题1

结束结果就像

Monday
Friday
Saturday
Sunday
Thursday
Tuesday
Wednesday
  • 问题2

当我选择值“星期一”时,一切都很好。它传递值“1”

当我选择“星期二”时,它选择值2,3和7.与星期三和星期日相同。

很少有其他选择框,使用相同的想法,工作正常。 没有数据重复。

可能是什么问题?

4 个答案:

答案 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>