繁体   English   中英

PHP,MySql-旧日历不显示每月第10天以下的事件

[英]PHP, MySql - Old Calendar not showing events below day 10 of each month

我正在使用David Walsh PHP日历,经过一些修改后,它再次可以正常工作,但是我有一个问题我无法修复,每个月的第10天之前的事件都没有出现...

这是几个月前的问题,但我无法解决。.这是INT的问题,不能为'01'或'02',但始终为'1'和'2'

您可以在www.proxin.nl/nologin/上看到日历,2014年10月9日至10日有活动,代码在下面,请您能向我介绍正确的方向吗?

谢谢,丹尼斯

<?php
include 'config.php';
function draw_calendar($month,$year,$events = array()){
    /* draw table */
    $calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';
    /* table headings */
    $headings = array('Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag');
    $calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>';
    /* days and weeks vars now ... */
    $running_day = date('w',mktime(0,0,0,$month,1,$year));
    $days_in_month = date('t',mktime(0,0,0,$month,1,$year));
    $days_in_this_week = 1;
    $day_counter = 0;
    /* row for week one */
    $calendar.= '<tr class="calendar-row">';
    /* print "blank" days until the first of the current week */
    for($x = 0; $x < $running_day; $x++){
        $calendar.= '<td class="calendar-day-np">&nbsp;</td>';
        $days_in_this_week++;
    }

    /* keep going with days.... */
    for($list_day = 1; $list_day <= $days_in_month; $list_day++){
        $calendar.= '<td class="calendar-day">';
        /* add in the day number */
        $calendar.= '<div class="day-number">'.$list_day.'</div>';
        $event_day = $year.'-'.$month.'-'.$list_day;

        if(isset($events[$event_day])) {
            foreach($events[$event_day] as $event) {
                $calendar.= '<div class="event"><a href="?event='.$event['id'].'">'.$event['bedrijfsnaam'].'<span>'.$event['tijdvan'].' - '.$event['tijdtot'].'</span></a></div>';
            }

        } else {
            $calendar.= str_repeat('',2);
        }

        $calendar.= '</td>';

        if($running_day == 6){
            $calendar.= '</tr>';

            if(($day_counter+1) != $days_in_month){
                $calendar.= '<tr class="calendar-row">';
            }

            $running_day = -1;
            $days_in_this_week = 0;
        }

        $days_in_this_week++;
        $running_day++;
        $day_counter++;
    }

    /* finish the rest of the days in the week */

    if($days_in_this_week < 8){
        for($x = 1; $x <= (8 - $days_in_this_week); $x++){
            $calendar.= '<td class="calendar-day-np">&nbsp;</td>';
        }

    }

    /* final row */
    $calendar.= '</tr>';
    $calendar.= '</table>';
    return $calendar;
}

?>
<link rel="stylesheet" href="css/foundation.css" />
<link rel="stylesheet" href="css/style.css" />
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="js/bPopup.js"></script>
<script type="text/javascript" src="js/hamburger.js"></script>

<div class="row">
<div class="large-12 medium-12 panel columns">
    <?php
// date settings
    $month = (int) (isset($_GET['month']) ? $_GET['month'] : date('m'));
    $year = (int) (isset($_GET['year']) ? $_GET['year'] : date('Y'));
    if($month < 10){
        $month = '0'.$month;
    }
    // select month control
    $select_month_control = '<select name="month" id="month">';
    for($x = 1; $x <= 12; $x++){
        $select_month_control.= '<option value="'.$x.'"'.($x != $month ? '' : '     selected="selected"').'>'.date('F',mktime(0,0,0,$x,1,$year)).'</option>';
}
$select_month_control.= '</select>';
// select year control
$year_range = 7;
$select_year_control = '<select name="year" id="year">';
for($x = ($year-floor($year_range/2)); $x <= ($year+floor($year_range/2)); $x++) {
    $select_year_control.= '<option value="'.$x.'"'.($x != $year ? '' : 'selected="selected"').'>'.$x.'</option>';
}
$select_year_control.= '</select>';
// bringing the controls together
$controls = '<form method="get">'.$select_month_control.$select_year_control.'<input type="submit" name="submit" class="button" value="Gaan!"></form>';
// get all events for the given month   
$result = mysqli_query($con, "SELECT bedrijfsnaam, TIME_FORMAT(tijdvan, '%H:%i') as tijdvan, TIME_FORMAT(tijdtot, '%H:%i') as tijdtot, id, DATE_FORMAT(datum,'%Y-%m-%d') AS datum FROM reserveringen WHERE datum LIKE '$year-$month%' ORDER BY tijdvan") or die('cannot get results!');
while($row = mysqli_fetch_assoc($result)){
    $events[$row['datum']][] = $row;
}
echo '<div class="center"><a class="databefore" href="?month='.($month != 1 ? $month - 1 : 12).'&year='.($month != 1 ? $year : $year - 1).'" class="control">&lt;</a>';
echo '<caption>'.date('F',mktime(0,0,0,$month,1,$year)).' '.$year.'</caption>';
echo '<a class="dataafter" href="?month='.($month != 12 ? $month + 1 : 1).'&year='.($month != 12 ? $year : $year + 1).'" class="control">&gt;</a></div>';
echo '<div class="controls">'.$controls.'</div>';
echo draw_calendar($month,$year,$events);
?>

和config.php:

<?php 

$host="localhost";
$username="agenda2";
$password="agenda2";
$db_name="agenda2";

$con=mysqli_connect("$host", "$username", "$password", "$db_name")or die("cannot connect");

就像您说的那样,您需要月份和日期的前导零。 在我看来,这条线

$event_day = $year.'-'.$month.'-'.$list_day;

是导致错误的原因。 2014年10月9日将$ event_day设为2014-10-9而不是2014-10-09。 你可以尝试做

$event_day = sprintf('%d-%02d-%02d', $year, $month, $list_day);

要么

$event_day = date('Y-m-d', mktime(0,0,0,$month,$list_day,$year));

暂无
暂无

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

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