如何使用MySQL、PHP等创建动态日历
我希望根据一些预先存在的事件条目创建一个日历。我目前有一个使用MySQL和PHP的事件创建系统。然而,我只能以议程的形式列出这些,并按最快的事件排序 是否存在基于数据库中的事件创建月历的现有方法?我几乎没有编码经验,所以我不认为我能够创建自己的日历系统,但是有了一些编码帮助,我也许能够把一些东西拼凑起来 我更喜欢的最终结果是有一个日历,日历上的事件标题在正确的日期(可能会被裁剪,以适合),有一个指向事件页面的链接,悬停时有工具提示式的弹出窗口(我已经在议程中实现了一些东西)。此外,我愿意使用PHP、MySQL、Javascript或Jquery技术,因为我的服务器上已经有了这些如何使用MySQL、PHP等创建动态日历,php,mysql,events,calendar,Php,Mysql,Events,Calendar,我希望根据一些预先存在的事件条目创建一个日历。我目前有一个使用MySQL和PHP的事件创建系统。然而,我只能以议程的形式列出这些,并按最快的事件排序 是否存在基于数据库中的事件创建月历的现有方法?我几乎没有编码经验,所以我不认为我能够创建自己的日历系统,但是有了一些编码帮助,我也许能够把一些东西拼凑起来 我更喜欢的最终结果是有一个日历,日历上的事件标题在正确的日期(可能会被裁剪,以适合),有一个指向事件页面的链接,悬停时有工具提示式的弹出窗口(我已经在议程中实现了一些东西)。此外,我愿意使用PH
谢谢你需要把这个项目分解一下。首先,确定您的需求并设计一个数据库来满足它们。对于日历,我更喜欢有一个事件表,然后有一个单独的表来存储这些事件的发生。这允许重复发生事件。例如,如果在接下来的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>  ';
}
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>  ';
}
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].' '.$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构建的)