html — PHP, MySql — Старый календарь не отображает события ниже 10-го дня каждого месяца

Я использую PHP-календарь Дэвида Уолша, и после некоторой модификации он снова работает отлично, но у меня есть одна проблема, которую я не могу исправить, события в дни до 10-го числа каждого месяца не появляются …

Это было проблемой раньше с месяцами, но я не могу это исправить .. Это была проблема с INT, который не может быть «01» или «02», но всегда будет «1» и «2»

Вы можете увидеть календарь на www.proxin.nl/nologin/ , Есть события в 9 и 10 октября 2014 года, код ниже, не могли бы вы дать мне толчок в правильном направлении, пожалуйста?

Спасибо,
Деннис

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

0

Решение

Как вы говорите, вам нужен ведущий ноль для месяца и дня. Для меня это выглядит как линия

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

это то, что вызывает ошибку. 9 октября 2014 года $ 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));
0

Другие решения

Других решений пока нет …