【问题标题】:MYSQL PHP Select Order ByMYSQL PHP 选择顺序
【发布时间】:2014-02-19 12:38:57
【问题描述】:

我有示例表 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

当我选择 Value "Monday" 时,一切正常。它传递值“1”

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

很少有其他选择框是用相同的想法制作的,效果很好。 没有数据重复。

可能是什么问题?

【问题讨论】:

  • 倒数第二行$option5 .=有错字吗?
  • $query = "select day_of_week, day from date_table order by day_of_week";并重写 $option 而不是 $option5。
  • 你为什么要使用 MySQL!?!?
  • $_REQUEST["sday"] 中有哪些值?
  • @Strawberry 一些日历系统在数据库中存储天数。

标签: php mysql sql


【解决方案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 ($row['day_of_week'] == $_REQUEST["sday"]) ? ' selected ' : '';
  • 问题出在“sday”。如果我选择星期日,它给出的值是 2 或 3 或 7
  • @kaulainais 你能GROUP BY day_of_week吗?没有理由选择所有三个,除非您的输入不正确。
  • 我想我知道问题出在哪里。谢谢沙米尔
【解决方案2】:

你使用变量$option5,而不是$option

【讨论】:

  • 我改了。这不是问题
【解决方案3】:

试试这个代码:

    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>';

}

它更干净,你不会遇到括号问题

【讨论】:

    【解决方案4】:

    我不明白。为什么不这样做(数组甚至不是必需的,但是嘿)...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 2014-12-05
      相关资源
      最近更新 更多