нужна помощь в создании URL с указанием года и месяца - PullRequest
0 голосов
/ 14 сентября 2009

Мне нужно создать ссылку на следующую и предыдущую ссылку

вот образец

<a href="/calendar/2009/10/">previous</a>
<? echo $_GET['month'].', '.$_GET['year']; // shows 11, 2009
<a href="/calendar/2009/12/">next</a>

, где 2-й сегмент - это год, а первый сегмент - месяц

У меня есть месяц и год в массиве GET, но есть идеи, как лучше всего это сделать?

Я думал, что prevmonth = month-1, но тогда, если предыдущий месяц был новым годом, все испортилось.

Ответы [ 4 ]

2 голосов
/ 14 сентября 2009

Вы можете использовать mktime со значениями вне допустимого диапазона, чтобы делать подобные вещи. См. Пример № 2 на странице руководства.

например. echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997)); даст 1998-01-01.

1 голос
/ 14 сентября 2009

strtotime () делает это довольно просто.

$year = 2009;
$month = 5;

$nextMonth = strtotime('+1 Month', strtotime($year.'-'.$month.'-01'));

echo date('Y/m', $nextMonth);
0 голосов
/ 14 сентября 2009

Я думаю, что самым простым способом было бы просто проверить условие «предыдущий месяц <1» и уменьшить год. Возможно, есть более умный способ сделать это, но это достаточно легко понять: </p>

$prevyear = intval($_GET['year']);
$prevmonth = intval($_GET['month']) - 1;

// Check for year rollover.
if ( $prevmonth < 1 ) {
   $prevmonth = 12;
   $prevyear = $prevyear - 1;
}
0 голосов
/ 14 сентября 2009

Довольно легко поймать такую ​​логику ...? Просто включите / dec год, если ваш месяц выходит за пределы ...

#sanity check inputs
$month=min(max(intval($_GET['month']), 1),12);
$year=intval($_GET['year']);

$prev=array($month-1, $year);
if ($prev[0]==0)
{
    $prev[0]=12;
    $prev[1]--;
}
$next=array($month+1, $year);
if ($next[0]==13)
{
    $next[0]=1;
    $next[1]++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...