如何使用MySQL、PHP等创建动态日历

如何使用MySQL、PHP等创建动态日历,php,mysql,events,calendar,Php,Mysql,Events,Calendar,我希望根据一些预先存在的事件条目创建一个日历。我目前有一个使用MySQL和PHP的事件创建系统。然而,我只能以议程的形式列出这些,并按最快的事件排序 是否存在基于数据库中的事件创建月历的现有方法?我几乎没有编码经验,所以我不认为我能够创建自己的日历系统,但是有了一些编码帮助,我也许能够把一些东西拼凑起来 我更喜欢的最终结果是有一个日历,日历上的事件标题在正确的日期(可能会被裁剪,以适合),有一个指向事件页面的链接,悬停时有工具提示式的弹出窗口(我已经在议程中实现了一些东西)。此外,我愿意使用PH

我希望根据一些预先存在的事件条目创建一个日历。我目前有一个使用MySQL和PHP的事件创建系统。然而,我只能以议程的形式列出这些,并按最快的事件排序

是否存在基于数据库中的事件创建月历的现有方法?我几乎没有编码经验,所以我不认为我能够创建自己的日历系统,但是有了一些编码帮助,我也许能够把一些东西拼凑起来

我更喜欢的最终结果是有一个日历,日历上的事件标题在正确的日期(可能会被裁剪,以适合),有一个指向事件页面的链接,悬停时有工具提示式的弹出窗口(我已经在议程中实现了一些东西)。此外,我愿意使用PHP、MySQL、Javascript或Jquery技术,因为我的服务器上已经有了这些


谢谢

你需要把这个项目分解一下。首先,确定您的需求并设计一个数据库来满足它们。对于日历,我更喜欢有一个事件表,然后有一个单独的表来存储这些事件的发生。这允许重复发生事件。例如,如果在接下来的10天中,我每周一都有一个事件,那么我将在事件表中有10个事件,在事件表中有一个事件。现在,问题是不可能表示无限重复的事件。根据我的经验,用户最好选择一个结束日期,但根据您的应用程序,您的用户可能不喜欢这样


一旦建立了数据库,就可以使用该界面了。

这是在PHP中生成动态日历的最小、最简单和最简单的编码方式,无需任何jquery。只需复制下面的PHP代码并另存为“index.PHP”文件。然后运行这个文件。将生成一个动态日历,具有选择年、月和上下个月的功能。您可以设置事件标题或显示日期的链接。我希望这会有所帮助

<?php 
    $y = $_GET['y'] ?  $_GET['y'] : date('Y');
    $m = $_GET['m'] ?  $_GET['m'] : date('m');
    //display 5 next and 5 previous years of selected year
    for ($i=$y-5; $i<=$y+5; $i++){
        echo '<a href="index.php?y='.$i.'&m='.$m.'">'.$i.'</a>&nbsp&nbsp;';  
    }
    echo "<br><br>";

    //months array just like Jan,Feb,Mar,Apr in short format
    $m_array = array('1'=>'Jan', '2'=>'Feb', '3'=>'Mar', '4'=>'Apr', '5'=>'May', '6'=>'Jun', '7'=>'Jul', '8'=>'Aug', '9'=>'Sep', '10'=>'Oct', '11'=>'Nov', '12'=>'Dec');
    //display months
    foreach ($m_array as $key=>$val){
        echo '<a href="index.php?y='.$y.'&m='.$key.'">'.$val.'</a>&nbsp&nbsp;';      
    }
    echo "<br><br>";

    $d_array = array('1'=>31, '2'=>28, '3'=>31, '4'=>30, '5'=>31, '6'=>30, '7'=>31, '8'=>31, '9'=>30, '10'=>31, '11'=>30, '12'=>31);
    $d_m = ($m==2 && $y%4==0)?29:$d_array[$m];
    echo '<table><tr><th colspan="7">'.$m_array[$m].'&nbsp'.$y.'</th></tr><tr>';
    //days array
    $days_array = array('1'=>'Mon', '2'=>'Tue', '3'=>'Wed', '4'=>'Thu', '5'=>'Fri', '6'=>'Sat', '7'=>'Sun');
    //display days
    foreach ($days_array as $key=>$val){
        echo '<th>'.$val.'</th>';      
    }
    echo "</tr></tr>";
    $date = $y.'-'.$m.'-01';
    //find start day of the month
    $startday = array_search(date('D',strtotime($date)), $days_array);
    //daisplay month dates
    for($i=0; $i<($d_m+$startday); $i++){
        $day = ($i-$startday+1<=9)?'0'.($i-$startday+1):$i-$startday+1;
        echo ($i<$startday)?'<td></td>':'<td>'.$day.'</td>';
        echo ($i%7==0)?'</tr><tr>':''; 
    }
    //calculate next & prev month
    $next_y=(($m+1)>12)?($y+1):$y;
    $next_m=(($m+1)>12)?1:($m+1);
    $prev_y=(($m-1)<=0)?($y-1):$y;
    $prev_m=(($m-1)<=0)?12:($m-1);
    //daisplay next prev
    echo '<tr><td><a href="index.php?y='.$prev_y.'&m='.$prev_m.'">Prev</a></td><td></td><td></td><td></td><td></td><td></td><td><a href="index.php?y='.$next_y.'&m='.$next_m.'">Next</a></td></tr>';
?>


这是一个非常广泛的问题。也许你应该把任务分成更小的部分,然后问更具体的问题。Wordpress有很多事件日历插件(WP是基于PHP和MySQL构建的)