2014-02-19 89 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>