Выберите текущую дату с помощью PHP - PullRequest
1 голос
/ 09 января 2011

Это действительно сводит меня с ума, поэтому, пожалуйста, помогите.

У меня есть этот код, как показано ниже, он отображает список дат на следующие 7 дней.

Вещи, которые я хочукод достижения.

  1. Отображение «Сегодня и« Завтра »вместо соответствующей даты.
  2. После выбора даты добавьте« текущий »класс, таким образом она будет выделена другимcolor.
  3. «Сегодня» следует выбирать по умолчанию при первой загрузке страницы.

Приведенный ниже код отвечает этим требованиям

<?php

$today = date("d-m-Y", strtotime('today')); 
$tomorrow = date("d-m-Y", strtotime('tomorrow')); 

echo '
<li><a href="?date='.$today.'">'.(($_GET['date'] == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 

echo '
<li><a href="?date='.$tomorrow.'">'.(($_GET['date'] == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 

for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("d-m-Y", $time);

echo '
<li><a href="?date='.$date.'">'.(($_GET['date'] == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($_GET['date']) && $_GET['date'] == $date) ? '</span>' : '') . "</a></li>";}

?>

Однако в последнее время янеобходимо изменить форматирование даты с dmY на Ymd

. В результате этого моего третьего требования, выбранное по умолчанию «сегодня» больше не работает.

<?php

$today = date("Y-m-d", strtotime('today')); 
$tomorrow = date("Y-m-d", strtotime('tomorrow')); 

echo '
<li><a href="?date='.$today.'">'.(($_GET['date'] == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 

echo '
<li><a href="?date='.$tomorrow.'">'.(($_GET['date'] == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 

for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("Y-m-d", $time);

echo '
<li><a href="?date='.$date.'">'.(($_GET['date'] == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($_GET['date']) && $_GET['date'] == $date) ? '</span>' : '') . "</a></li>";}

?>

Может кто-тоПожалуйста, помогите с этим.

Заранее спасибо

У меня есть это сейчас

Но я боюсь, что это не добавляет класс при загрузке страницы. Так что "Сегодня"по умолчанию не выделено.

Я что-то напутал?

<?php

if(isset($_GET['date'])){

$gdate = $_GET['date'];
}

else{

$gdate = date("Y-m-d", strtotime('today')); //Or whatever arbitrary date you want.

}
$today = date("Y-m-d", strtotime('today')); 
$tomorrow = date("Y-m-d", strtotime('tomorrow')); 

echo '
<li><a href="?date='.$today.'">'.(($gdate == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 

echo '
<li><a href="?date='.$tomorrow.'">'.(($gdate == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 

for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("Y-m-d", $time);

echo '
<li><a href="?date='.$date.'">'.(($gdate == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($gdate) && $gdate == $date) ? '</span>' : '') . "</a></li>";}

?>

1 Ответ

1 голос
/ 09 января 2011

Хорошо, проблема в том, что $ _GET ['date'] не устанавливается, верно?

Что вам нужно сделать, так это не использовать $ _GET ['date'] в логике. Сделайте что-то вроде этого:

if(isset($_GET['date']))
{
    $gdate = $_GET['date'];
}else{
    $gdate = date("Y-m-d", strtotime('today')); //Or whatever arbitrary date you want.
}

Тогда вы используете $ gdate в логике. Таким образом, если установлено значение $ _GET ['date'], оно будет использовать его, в противном случае будет использоваться сегодняшняя дата. Кстати, вам не нужно использовать strtotime для получения сегодняшней даты, просто date("Y-m-d"); получит ее, потому что второй аргумент для даты по умолчанию установлен на текущее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...