2011-05-22 75 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"; 
相关问题