dongshushen4392 2014-10-01 22:34
浏览 25
已采纳

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

Im using the David Walsh PHP calendar and after some modifying it works perfectly again, but i have one problem i cant fix myself, the events on days before day 10 of each month aint showing up...

This was a problem before with the months but i cant fix this.. This was a problem with a INT, that cant be '01' or '02' but always will be '1' and '2'

You could see the calendar at www.proxin.nl/nologin/ , there are events at 9 and 10 october 2014, the code is below, could you give me a push in the right direction please?

Thanks, Dennis

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

and the config.php:

<?php 

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

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

1条回答 默认 最新

  • doucuodan0897 2014-10-02 03:14
    关注

    Like you say, you need a leading zero for the month and day. To me it looks like the line

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

    is what is causing the error. October 9, 2014 would make $event_day be 2014-10-9 instead of 2014-10-09. You could try doing

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

    or

    $event_day = date('Y-m-d', mktime(0,0,0,$month,$list_day,$year));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测