2014-03-30 160 views
0

我爲客戶創建了一個日曆/日程安排,由於我是一名前端開發人員,並且使用php完成了新的工作,所以它有點粗糙。帶有過期日期的新日曆的PHP日曆

這是我得到:http://www.nrg-agency.com/events/

的腳本是真正的基礎,而這是第一次上最遠日期排序,這是我搞到現在,即將舉行的日期是在頂部整理工作。

我的問題是,我怎麼能創建過去的事件會自動進入一個新的分區下的時間表與「過去的事件」?

這是我在我的 「的functions.php」 文件有:

<?php 

function init_db(){ 

    global $db; 

    $sql = "SHOW TABLES FROM $db[db]"; 
    $result = mysql_query($sql); 

    $buildNow = 'yes'; 

    while($row = mysql_fetch_row($result)){ 
       if($row[0] == 'joe_cal_events'){ 
        $buildNow = 'no'; 
       } 
    } 

    if($buildNow == 'yes'){ 
     mysql_query(" 
     CREATE TABLE `joe_cal_events` (
          `id` mediumint(8) NOT NULL auto_increment, 
          `start` date NOT NULL default '2014-30-04', 
          `end` date NOT NULL default '2020-01-01', 
          `title` text NOT NULL, 
          `url` text NOT NULL, 
          `description` text NOT NULL, 
          PRIMARY KEY (`id`) 
         ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
     ") or die(mysql_error()); 
    } 

} 
foreach ($dataArray as $key => $row) { 
    $orderByDate[$key] = strtotime($row['start']); 
} 

array_multisort($orderByDate, SORT_ASC, $dataArray); 

array_multisort($orderByDate, SORT_ASC, $dataArray); 

function prettyDate($date,$type){ 
    list($y,$m,$d) = explode("-", $date); 
    if($type == 1){ 
     return "$m/$d/$y"; 
    } 
    if($type == 2){ 
     return(date("j F Y",mktime(0,0,0,$m,$d,$y))); 
    } 
} 

?> 

這在我events.php:

<body> 

"; 


$q = mysql_query("select * from joe_cal_events order by start asc"); 
while($r = mysql_fetch_array($q)){ 

    print " 
    <div class='feedEkList'><li> 
    <div class='itemTitle'>$r[title]</div> 
    <div class='itemdate'>".prettyDate($r[start],2)."</div> 
    "; 
    if($r[description]){ 
     print "<div class='itemText'>$r[description]</div>"; 
    } 
    print " 
    </li> 
    </div> 
    "; 
} 

print " 
</div> 
</body> 

再次感謝!

回答

1

循環訪問您的陣列。

$pastevents = array(); 
$futureevents = array(); 

foreach($events as $event) { 
    if(strtotime($event['date']) < time()) { 
     $pastevents[] = $event; 
    } else { 
     $futureevents[] = $event; 
} 

現在你有兩個數組,一個包含你的過去,一個包含你未來的事件。

在你的情況下更換:

while($r = mysql_fetch_array($q)){ 

有:

$pastevents = array(); 
$futureevents = array(); 

while($r = mysql_fetch_array($q)){ 
    if(strtotime($r['date']) < time()) { 
     $pastevents[] = $r; 
    } else { 
     $futureevents[] = $r; 
    } 
} 

foreach($futureevents as $event) { 
    // your display logic 
} 

foreach($pastevents as $event) { 
    // your display logic 
} 
+0

感謝您的快速答覆!但正如我所說,我是全新的PHP。 你能看看我的代碼嗎?如何將這個添加到HTML? – MBouwman

+0

@MBouwman我已更新我的回覆。我使用完整的單詞,如$ event而不是$ r,因爲它更具可讀性。當另一位程序員看到代碼時,他會更容易理解。 –