2014-02-19 87 views
0

我有示例表date_table,作为数据过滤器 2列的基础 - 一天DAY_OF_WEEK 我做查询在SQLMYSQL PHP选择顺序按

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.星期三和星期日相同。

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

可能是什么问题?

+0

是否有第二行最后一行错字'$ option5。='? –

+0

$ query =“select date_of_week,day_table date_table order by day_of_week”;并重写$ option而不是$ option5。 –

+1

为什么你为此使用MySQL!?!? – Strawberry

回答

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>' 
+0

对于'($ row ['day_of_week'] == $ _REQUEST [“sday”])是+1吗? 'selected':'';' –

+0

问题出在“sday”。如果我选择星期天,它给出值2或3或7 – kaulainais

+0

@kaulainais你可以'GROUP BY day_of_week'?没有理由选择他们三个,除非你的输入不正确。 – bear

0

使用可变$option5,而不是$option

+0

我改变了它。这不是问题 – kaulainais

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

}

它的清洁,你会不有bracktes问题

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>