calendar.blade.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Document</title>
  6. @yield('styles')
  7. </head>
  8. <body>
  9. <?php
  10. $date=date("Y-m-d");
  11. $sd = explode("-", $date);
  12. $year = $sd[0];
  13. $month = $sd[1];
  14. $day = $sd[2];
  15. // Вычисляем число дней в текущем месяце
  16. $dayofmonth = date('t',
  17. mktime(0, 0, 0, $month, 1, $year));
  18. //Готовим запрос к БД
  19. $todate = "$year-$month-$dayofmonth";
  20. $fromdate = "$year-$month-01";
  21. //$query = "SELECT date,enddate from sobytia WHERE startdate<='$todate' AND enddate>=$fromdate";
  22. //$res_db = $db->sql($query);
  23. //$d = array();$k=array();
  24. //for($i = 1; $i<=$dayofmonth; $i++){
  25. // $k[$i] = $i;
  26. //}
  27. //$i=0;
  28. //while ($a = mysqli_fetch_row($res_db))
  29. //{
  30. // //for($i = 1; $i<=$dayofmonth; $i++){
  31. // foreach ($k as $i)
  32. // { //Добавление 0 к дате
  33. // if($i<10) $cd = "$year-$month-0".$i; else $cd = "$year-$month-$i";
  34. // if ($cd >= $a[0] && $cd <= $a[1])
  35. // {
  36. // $d[$i] = $cd;
  37. // unset($k[$i]);
  38. // }
  39. // }
  40. //}
  41. // Счётчик для дней месяца
  42. $day_count = 1;
  43. // 1. Первая неделя
  44. $num = 0;
  45. for($i = 0; $i < 7; $i++)
  46. {
  47. // Вычисляем номер дня недели для числа
  48. $dayofweek = date('w',
  49. mktime(0, 0, 0, $month, $day_count, $year));
  50. // Приводим к числа к формату 1 - понедельник, ..., 6 - суббота
  51. $dayofweek = $dayofweek - 1;
  52. if($dayofweek == -1) $dayofweek = 6;
  53. if($dayofweek == $i)
  54. {
  55. // Если дни недели совпадают,
  56. // заполняем массив $week
  57. // числами месяца
  58. $week[$num][$i] = $day_count > 9 ? $day_count : '0'.$day_count;
  59. $day_count++;
  60. }
  61. else
  62. {
  63. $week[$num][$i] = "";
  64. }
  65. }
  66. // 2. Последующие недели месяца
  67. while(true)
  68. {
  69. $num++;
  70. for($i = 0; $i < 7; $i++)
  71. {
  72. $week[$num][$i] = $day_count > 9 ? $day_count : '0'.$day_count;
  73. $day_count++;
  74. // Если достигли конца месяца - выходим
  75. // из цикла
  76. if($day_count > $dayofmonth) break;
  77. }
  78. // Если достигли конца месяца - выходим
  79. // из цикла
  80. if($day_count > $dayofmonth) break;
  81. }
  82. // 3. Выводим содержимое массива $week
  83. // в виде календаря
  84. // Выводим таблицу
  85. echo '<table id="calendar">';
  86. //заголовок
  87. $rusdays = array('ПН','ВТ','СР','ЧТ','ПТ','СБ','ВС');
  88. $rusmonth = array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
  89. echo '<thead>
  90. <tr>
  91. <td onclick="monthf(\'prev\');"><</td>
  92. <td colspan="5">'.$rusmonth[$month-1].', '.$year.'</td>
  93. <td onclick="monthf(\'next\');">></td>
  94. </tr>';
  95. echo '<tr>';
  96. foreach ($rusdays as $rusday){
  97. echo '<td>'.$rusday.'</td>';
  98. }
  99. echo '</tr>';
  100. echo '</thead>';
  101. //тело календаря
  102. for($i = 0; $i < count($week); $i++)
  103. {
  104. echo "<tr>";
  105. for($j = 0; $j < 7; $j++)
  106. {
  107. if(!empty($week[$i][$j]))
  108. {
  109. // Если имеем дело с выбраной датой подсвечиваем ee
  110. if($week[$i][$j]==$day)
  111. {
  112. echo '<td class="today">';
  113. }
  114. else
  115. {
  116. echo '<td>';
  117. }
  118. // Если запись в базе за текущую дату есть, делаем ссылку
  119. // if($d[$week[$i][$j]])
  120. // {
  121. echo '<a href="'.route('user.date', [$user->id, $year.'-'.$month.'-'.$week[$i][$j]]).'">'.$week[$i][$j].'</a>';
  122. // }
  123. // else
  124. // {
  125. // echo $week[$i][$j];
  126. // }
  127. echo '</td>';
  128. }
  129. else echo "<td> </td>";
  130. }
  131. echo "</tr>";
  132. }
  133. ?>
  134. @yield('map')
  135. <script>
  136. var mon = parseInt("<?php echo $month; ?>");
  137. console.log('sdfsdfsdfsdf', mon);
  138. var year = parseInt(<?php echo $year; ?>);
  139. function monthf(pn){
  140. if (pn == 'next'){
  141. mon++;
  142. }else if (pn == 'prev'){
  143. mon--;
  144. }else{
  145. alert('Неправильный параметр');
  146. return false;
  147. }
  148. if (mon > 12){
  149. year ++;
  150. mon = 1;
  151. }
  152. if (mon < 1){
  153. year --;
  154. mon = 12;
  155. }
  156. if ((mon < 10) && (mon >= 1)){
  157. mon = '0'+mon;
  158. }
  159. var nextDate = year+'-'+mon+'-00';
  160. // var ajaxaddr = "путь_к_текущему_скрипту?date='+nextDate;
  161. // var http = new XMLHttpRequest();
  162. // if (http) {
  163. // http.open('get', ajaxaddr);
  164. // http.onreadystatechange = function () {
  165. // if(http.readyState == 4){
  166. // if (http.status == 200) {
  167. // document.getElementById('calendar').innerHTML = http.responseText;
  168. // }
  169. // }
  170. // }
  171. // http.send(null);
  172. // }
  173. }
  174. </script>
  175. @yield('scripts')
  176. </body>