2011-01-08 3 views
1

Это действительно сводит меня с ума, поэтому, пожалуйста, помогите.Выберите текущую дату с PHP

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

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

  1. Display «Сегодня и„Завтра“, а не соответствующая дата.
  2. После выбирается дата добавления„текущий“класс, таким образом, он будет выделен другим цветом.
  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>";} 

?> 

В последнее время мне нужно было изменить форматирование даты от d-m-Y до Y-m-d

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

<?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>";} 

?> 
+0

Что вы хотите сказать? Где вы застряли? –

+0

Что такое '$ _GET ['date']' заполнено? – webbiedave

+0

Привет, Пекка, Ну, я хочу решить проблему, созданную с помощью формата даты. – jamjam

ответ

1

Итак, проблема в $ _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"); получит ее, потому что второй аргумент для даты по умолчанию совпадает с текущим временем.

+0

Привет, Phonix. Я попытался включить ваше решение, но у меня проблемы с его работой. Не могли бы вы показать мне, как я добавлю его в свой оригинальный код. Еще раз спасибо. – jamjam

+0

Добавьте его над объявлениями '$ today' и' $ tomorrow' и замените все экземпляры '$ _GET ['date']' на '$ gdate', за исключением' $ _GET ['date'] 's в код выше. – Phoenix

+0

См. Выше ссылку – jamjam

Смежные вопросы