Diplay Calendar Weeks в выпадающем списке

Я написал небольшой сценарий и не очень понимаю, почему он не работает. Я хочу отобразить все календарные недели (обычно 52 недели в год) внутри выпадающего списка! Я не нашел подобного скрипта в интернете, поэтому попробовал сам. Может кто-нибудь сказать мне, что я сделал не так?

Я вижу только пустой выпадающий список! Было бы здорово, если бы кто-то мог мне помочь. Мне потребовалось некоторое время, чтобы написать эту часть кода.

РЕДАКТИРОВАТЬ:

Мои функции:

<?php
function weekDayToTime($week, $year, $dayOfWeek = 1) {
//dayOfWeek: 0=sunday, 1=monday, ..., 6=saturday
$dayOfWeekRef = date("w", mktime (0,0,0,1,4,$year));
if ($dayOfWeekRef == 0) $dayOfWeekRef = 7;
$resultTime = mktime(0,0,0,1,4,$year) + ((($week - 1) * 7 + ($dayOfWeek - $dayOfWeekRef)) * 86400);
$resultTime = cleanTime($resultTime);  //Cleaning daylight saving time hours
return $resultTime;
};

function cleanTime($time) {
//This function strips all hours, minutes and seconds from time.
//For example useful of cleaning up DST hours from time
$cleanTime = mktime(0,0,0,date("m", $time),date("d", $time),date("Y", $time));
return $cleanTime;
}

function weeks($year)
{
return date("W",mktime(0,0,0,12,28,$year));
}
?>

<?php


$year = date("Y");

echo "<form method='GET' action='index.php'>"."<select name='w' onChange='this.form.submit()'>";
for($i=1;$i<=weeks($year);$i++)
{


$start = weekDayToTime($i, $year);
$end   = cleanTime(604800 + $start);

if(weekDayToTime(date("W"), date("Y")) == $start)
{
$selected = "selected = 'selected' /";
}
else
{
$selected = '/';
}

echo "<option value='".$i."' $selected>KW ".$i.": ".strftime("%d. %B %Y", $start)." bis ".strftime("%d. %B %Y", $end)."</option>";
}
echo "</select>"."<input type='hidden' name='y' value='".$year."' />"."</form>";

?>

Спасибо,
Крис

2

Решение

    1 <?php
2 function weekDayToTime($week, $year, $dayOfWeek = 1) {
3     $dayOfWeekRef = date("w", mktime (0,0,0,1,4,$year));
4     if ($dayOfWeekRef == 0) $dayOfWeekRef = 7;
5     $resultTime = mktime(0,0,0,1,4,$year) + ((($week - 1) * 7 + ($dayOfWeek - $dayOfWeekRef)) * 86400);
6     $resultTime = cleanTime($resultTime);  //Cleaning daylight saving time hours
7     return $resultTime;
8 };
9
10 function cleanTime($time) {
11     //This function strips all hours, minutes and seconds from time.
12     //For example useful of cleaning up DST hours from time
13     $cleanTime = mktime(0,0,0,date("m", $time),date("d", $time),date("Y", $time));
14     return $cleanTime;
15 }
16 function weeks($year)
17 {
18     return date("W",mktime(0,0,0,12,28,$year));
19 }
20
21 $year = date("Y");
22 echo('year is ' . var_export($year, true));
23 echo('weeks is ' . var_export(weeks($year), true));
24
25 echo "<form method='GET' action='index.php'>"."<select name='w' onChange='this.form.submit()'>";
26 for($i=1;$i<=weeks($year);$i++) {
27
28
29     $start = weekDayToTime($i, $year);
30     $end   = cleanTime(604800 + $start);
31
32     if(weekDayToTime(date("W"), date("Y")) == $start) {
33         $selected = "selected = 'selected'";
34     } else {
35         $selected = '';
36     }
37
38     echo "<option value='".$i."' $selected>KW ".$i.": ".strftime("%d. %B %Y", $start)." bis ".strftime("%d. %B %Y", $end)."</option> \n";
39 }
40 echo "</select>"."<input type='hidden' name='y' value='".$year."' />"."</form> \n";
41
42 ?>

Это моя версия кода, которая, кажется, работает нормально, единственное, что я изменил, — это удаление слешей из $ selected, чтобы не было самозакрывающихся тегов параметров. Может ли это быть?

1

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

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

По вопросам рекламы [email protected]