2011-05-22 80 views
0

繼承人的問題... 我有一個循環看起來像這樣從我的數據庫中選擇的東西。從同一天選擇最後一個記錄

$query = "SELECT * FROM table WHERE publish <= CURDATE() AND active = 'Yes' AND (YEAR(begin) = YEAR(CURDATE()) OR YEAR(begin) = YEAR(CURDATE()) + 1) ORDER BY begin ASC"; 
         $resultSet = mysql_query($query); 

         if (mysql_num_rows($resultSet)) 
         { 
         $newsArray = array(); 


         while ($newsResult = mysql_fetch_array($resultSet)) 
         {         
         $newDate = $newsResult['begin'] ; 
         $timePeriod = date('F Y ',strtotime($newDate)); 

         $timePeriodY = date('Y',strtotime($timePeriod)); 
         $timePeriodM = date('F',strtotime($timePeriod));        

         if (!isset($newsArray[$timePeriod])) 
         { 
         $newsArray[$timePeriod] = array(); 
         }  
         $newsArray[$timePeriod][] = $newsResult;        
         }       


         foreach ($newsArray as $timePeriod => $newsItems) 
         { 

         $timePeriodY = date('Y',strtotime($timePeriod)); 

         if ($timePeriodY == $thisYear){ 


          } 
         else if ($timePeriodY == $nextYear){ 


         } 

         echo '<h2 class="year>'.$timePeriodY.'</h2>'; 
         echo '<ul class="column">'; 

         foreach ($newsArray as $timePeriod => $newsItems) 
         { 
         $timePeriodMonth = date('Y',strtotime($timePeriod)); 
         if ($timePeriodY == $timePeriodMonth) { 


         $moSe = strftime('%B',strtotime($timePeriod)); 
         $MonthSe = ucfirst($moSe); 


         $seMonth = str_replace($dateSearch,$dateReplace,date('F',strtotime($timePeriod))); 

         echo $seMonth;      

         foreach ($newsItems as $item) 
         { 



         $ad_event = date("Y-m-d",strtotime($item['event_end'])); 
         $today = date("Y-m-d"); 




          $dayMod = strftime('%e',strtotime($item['event_begin'])); 

          $seDay = str_replace($dateSearch,$dateReplace,date('D',strtotime($item['event_begin']))); 




         echo '<a href="javascript:gotoDotBottom('.$item['event_id'].',\''.$item['event_url'].'\');" id="e'.$item['event_id'].'" class="eventLink '.$markedEvent.'" overhead="'.$item['event_title'].'" overdate="'.date("Y-m-d",strtotime($item['event_begin'])).'" overtext="'. strip_tags($showSum) .'">'.$seDay.' '.$dayMod.' - '.$item['event_title'].'</a>'; 
         echo '</div>'; 
         } 



            }    
          } 

                } 


         } 

         else 
          { 
         echo ''; 
         } 

此代碼輸出每行的數據並將其分隔爲年份日等,但某些數據在同一天。那很好,但是當數據在同一天我想要一個變量,只保存當天最後的項目。

EX。

DB

PUBLISH  ID NAME 
2011-05-05 1  test 1 
2011-05-05 2  test 2 
2011-05-06 3  test 3 

我想從這樣的結果是這樣的

結果

test 1 ID 1 PUBLISH 2011-05-05 VARIABLE 2 <<-- see the variable that comes from test 2 row 
test 2 ID 2 PUBLISH 2011-05-05 VARIABLE 2 
test 3 ID 3 PUBLISH 2011-05-06 VARIABLE 3 

在這種情況下含義測試1保存有關測試2的信息,因爲測試2在測試1之後,他們都有相同的日期。如果在特定日期只有一個作爲測試2和3,則只需與該變量回顯相同的ID。

任何想法?請告訴我,如果我需要更詳細解釋:)

非常感謝您的幫助!

回答

1

按日期分類(開始),因爲你只想在同一日期(開始)1條記錄,因爲你想在dsc上的最新訂單'開始'(我相信'開始'存儲爲日期時間,否則你需要在桌上有dsc。)

$query = "SELECT * 
       FROM table 
       WHERE publish <= CURDATE() 
       AND active = 'Yes' 
        AND (YEAR(begin) = YEAR(CURDATE()) 
        OR YEAR(begin) = YEAR(CURDATE()) + 1) 
       GROUP BY begin 
       ORDER BY begin DSC"; 
相關問題