繁体   English   中英

如何使用PHP在mysql中插入不规则日历事件

[英]How to insert an irregular calendar events in mysql using PHP

我正在尝试输入在相同时间间隔(每周,每月两次,每季度,每年)中发生的事件。 我要显示的脚本是每月的脚本。(如果我能做到的话,我可以对其他时间间隔进行改编)。

输入了事件以及发生事件的正确星期数。。但是发生了以下问题:

---如何确定少于31天的月份没有为他们输入事件? -----如果在每个第1和第3个星期五(或每个星期五)或该月的最后一个星期四发生事件。 我如何调整下面的脚本来做到这一点。

谢谢。

当我插入时,我从mysql得到的样本...

+----+------+------+------------------+-----------+------------+----------+
| day| month| year | eventname        | eventtime | eventplace | eventweek|
+----+------+------+------------------+-----------+------------+-----------
|  1 |    2 | 2011 | Social Gathering | 12PM      | Room       |   05     |
|  8 |    2 | 2011 | Social Gathering | 12PM      | Room       |   06     |
|  15|    2 | 2011 | Social Gathering | 12PM      | Room       |   07     |
|  22|    2 | 2011 | Social Gathering | 12PM      | Room       |   08     |
|  29|    2 | 2011 | Social Gathering | 12PM      | Room       |   09     |
+----+------+------+------------------+-----------+------------+----------+

PHP代码

<?php 
    if(isset($_POST['myform'])){

             $day   =   array('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
             $month =   array('1','2','3','4','5','6','7','8','9','10','11','12');              
             $year  =   array('2011', '2012','2013', '2014', '2015', '2016');   

   $startday   =  mysql_real_escape_string($_POST['day']);
   $eventplace =  mysql_real_escape_string($_POST['eventplace']);
   $eventname  =  mysql_real_escape_string($_POST['eventname']);
   $eventtime  =  mysql_real_escape_string($_POST['eventtime']);

            for($i=0; $i<count($year); $i++){
                for($j=0; $j<count($month); $j++){
                    for($k=$startday; $k<count($day); $k = $k + 7){
                        $date = mktime(0,0,0,$month[$j],$k,$year[$i]); 
                            $week = date('W', $date) ;
      $query = mysql_query(" INSERT INTO caldemo(day, month, year, eventname, eventtime, eventplace, eventweek)
                             VALUES ('".intval($k)."', '".intval($month[$j])."', '".intval($year[$i])."', '".$eventname."', '".$eventtime."', '".$eventplace."', '".intval($week)."' )")or die(mysql_error()) ;
                  }
                }
             } 
          }
?>

简单的php解决方案:

function setDatePeriod($months=1, $date='')
{
    if(!$date) $date = date('Y-m-d');
    $d = new DateTime( $date );
    $d->modify( "+{$months} months" );
    return $d->format('Y-m-d');
}
echo setDatePeriod(3);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM