【问题标题】:PHP Calendar with expired date in new divPHP 日历在新 div 中有过期日期
【发布时间】:2014-03-30 09:35:07
【问题描述】:

我正在为客户创建日历/日程安排,这有点粗糙,因为我是前端开发人员并且完全是 php。

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

脚本是真正的基本脚本,它首先按最远日期排序,现在我开始工作了,即将到来的日期排在最前面。

我的问题是,我怎样才能让过去的事件自动进入带有“过去事件”的时间表下的新 div 中?

这是我在“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>

再次感谢!

【问题讨论】:

    标签: php mysql database date


    【解决方案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
    }
    

    【讨论】:

    • 感谢您的快速回答!但正如我所说,我对 PHP 完全陌生。你能看看我的代码吗?我如何将它添加到 HTML 中?
    • @MBouwman 我已经更新了我的回复。我使用像 $event 这样的完整词而不是 $r,因为它更具可读性。当其他程序员看到代码时,他会更容易理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2022-06-16
    • 2013-09-21
    相关资源
    最近更新 更多