2016-07-07 65 views
0

你好,我想獲取所有的數據順序在月,但我的問題是數據類型的月我的數據庫是varchar可以有人給我的想法如何做到這一點?PHP - 按月排序,但數據類型是varchar?

這裏是我的SQL enter image description here

這裏的結構是查詢的輸出到事件

enter image description here

,這裏是我的事件代碼

<div class="col-xs-6 col-md-3"> 
      <div class="title2"> 
          <h2><i class="fa fa-calendar"></i> Upcoming Events</h2> 
      </div> 
     <div class="fix sidebar floatright"> 
      <div class="fix single_sidebar"> 
       <div class="events"> 

        <?php 
        include_once('connection.php'); 
        $sql ="SELECT * FROM events ORDER BY month"; 
        $result = mysqli_query($con, $sql); 

        while($row = mysqli_fetch_array($result)){ 

           $month = $row['month']; 
           $day = $row['day']; 
           $year = $row['year']; 
           $etitle = $row['event_title']; 
           $stime = $row['start_time']; 
           $etime = $row['end_time']; 
           $evenue = $row['event_venue']; 
         ?> 
         <div class="fix single_events"> 
            <div class="date"> 
             <span class="month"><?php echo $month; ?></span> 
              <h1 class="day"><?php echo $day; ?></h1> 
            </div> 
            <h2><?php echo $etitle; ?></h2> 
            <p><?php echo $stime; ?> - <?php echo $etime; ?></p> 
            <p><?php echo $evenue; ?></p> 
           </div> 
           <hr> 
            <?php 
         } 
        ?> 


       </div> 
      </div> 
     </div> 
     </div> 
+1

在'varchar' _永遠_存儲日期,商店爲'datetime'相反,這是你的問題的最簡單的方法。如果您向我們顯示查詢的實際輸出,則可能有人會給您一個解決方法。 –

+1

如果您更改了列類型,它將在未來減少您的麻煩。解決方法是使用MySQL的['FIELD()'](http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field) - >'SELECT * FROM events ORDER按字段(月,'1月','2月',...)' – Sean

回答

2

問題是month是一個字符串,而不是數字值。

不知道值,很難建議一個特定的解決方案。但這裏是一個想法:

order by field(month, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')