-
-
Save codingwithsara/1eb5156af18fc1910bfcc07d146ea5cf to your computer and use it in GitHub Desktop.
PHP Calendar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Set your timezone | |
date_default_timezone_set('Asia/Tokyo'); | |
// Get prev & next month | |
if (isset($_GET['ym'])) { | |
$ym = $_GET['ym']; | |
} else { | |
// This month | |
$ym = date('Y-m'); | |
} | |
// Check format | |
$timestamp = strtotime($ym . '-01'); | |
if ($timestamp === false) { | |
$ym = date('Y-m'); | |
$timestamp = strtotime($ym . '-01'); | |
} | |
// Today | |
$today = date('Y-m-j', time()); | |
// For H3 title | |
$html_title = date('Y / m', $timestamp); | |
// Create prev & next month link mktime(hour,minute,second,month,day,year) | |
$prev = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)-1, 1, date('Y', $timestamp))); | |
$next = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)+1, 1, date('Y', $timestamp))); | |
// You can also use strtotime! | |
// $prev = date('Y-m', strtotime('-1 month', $timestamp)); | |
// $next = date('Y-m', strtotime('+1 month', $timestamp)); | |
// Number of days in the month | |
$day_count = date('t', $timestamp); | |
// 0:Sun 1:Mon 2:Tue ... | |
$str = date('w', mktime(0, 0, 0, date('m', $timestamp), 1, date('Y', $timestamp))); | |
//$str = date('w', $timestamp); | |
// Create Calendar!! | |
$weeks = array(); | |
$week = ''; | |
// Add empty cell | |
$week .= str_repeat('<td></td>', $str); | |
for ( $day = 1; $day <= $day_count; $day++, $str++) { | |
$date = $ym . '-' . $day; | |
if ($today == $date) { | |
$week .= '<td class="today">' . $day; | |
} else { | |
$week .= '<td>' . $day; | |
} | |
$week .= '</td>'; | |
// End of the week OR End of the month | |
if ($str % 7 == 6 || $day == $day_count) { | |
if ($day == $day_count) { | |
// Add empty cell | |
$week .= str_repeat('<td></td>', 6 - ($str % 7)); | |
} | |
$weeks[] = '<tr>' . $week . '</tr>'; | |
// Prepare for new week | |
$week = ''; | |
} | |
} | |
?> | |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<title>PHP Calendar</title> | |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> | |
<link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet"> | |
<style> | |
.container { | |
font-family: 'Noto Sans', sans-serif; | |
margin-top: 80px; | |
} | |
h3 { | |
margin-bottom: 30px; | |
} | |
th { | |
height: 30px; | |
text-align: center; | |
} | |
td { | |
height: 100px; | |
} | |
.today { | |
background: orange; | |
} | |
th:nth-of-type(1), td:nth-of-type(1) { | |
color: red; | |
} | |
th:nth-of-type(7), td:nth-of-type(7) { | |
color: blue; | |
} | |
</style> | |
</head> | |
<body> | |
<div class="container"> | |
<h3><a href="?ym=<?php echo $prev; ?>"><</a> <?php echo $html_title; ?> <a href="?ym=<?php echo $next; ?>">></a></h3> | |
<table class="table table-bordered"> | |
<tr> | |
<th>S</th> | |
<th>M</th> | |
<th>T</th> | |
<th>W</th> | |
<th>T</th> | |
<th>F</th> | |
<th>S</th> | |
</tr> | |
<?php | |
foreach ($weeks as $week) { | |
echo $week; | |
} | |
?> | |
</table> | |
</div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, just to ask why my creare next and previous link cannot function? After click it just show blank page... Please help me with it