dongxu1875 2014-03-30 09:35
浏览 10
已采纳

PHP日历在新div中过期日期

I'm creating a calendar/schedule for a client, it's kinda rough since I'm a frontend developer and complete new with php.

This is what I got: http://www.nrg-agency.com/events/

The script is real basic, and it was sorted on most far date first, which I got working now that the upcoming date is sorted on top.

My question is, how could I create that the past events automatically will go in a new div under the schedule with "Past Events"?

This is what I got in my "Functions.php" file:

<?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)));
   }
}

?>

And this in my 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>

Thanks again!

  • 写回答

1条回答 默认 最新

  • dongzhan1948 2014-03-30 09:55
    关注

    Loop through your array.

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

    Now you have two arrays, one containing your past, and one containing your future events.

    In your case replace:

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

    with:

    $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
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染