2011-01-08 6 views
1

이것은 정말로 나를 미치게하므로, 제발 도와주세요.PHP를 사용하여 현재 날짜를 선택하십시오.

아래 코드와 같이이 코드는 다음 7 일간의 날짜 목록을 표시합니다.

내가 원하는 코드를 얻으십시오.

  1. 디스플레이 "오늘과"내일 "대신 해당 날짜입니다. 날짜가 추가 선택하면
  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로 날짜의 형식을 변경해야했습니다.

이 세 번째 요구 사항의 결과로 "Today"에 대한 것이 기본적으로 더 이상 작동하지 않습니다.

<?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

안녕 Pekka, 글쎄 날짜 형식을 chnaging 만든 문제를 해결하려면. – jamjam

답변

1

그래, 문제는 $ _GET [ 'date']에 설정되지 않았습니까?

로직에서 $ _GET [ '날짜']을 사용하지 않아도됩니다.

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");이 그것을 얻습니다. 왜냐하면 date의 두번째 인수는 현재 시간을 기본값으로하기 때문입니다.

+0

안녕하세요. Phonix. 나는 당신의 솔루션을 통합하려고 노력했지만 문제를 일으키고 있습니다. 원래 코드에 어떻게 추가 할 수 있는지 보여 주시겠습니까? 다시 한번 감사드립니다. – jamjam

+0

'$ today'와'$ tomorrow'의 선언문 위에 추가하고'$ _GET [ 'date']'의'% _GET [ 'date']'를 제외한'$ gdate'로 모든 인스턴스를 대체합니다 위의 코드. – Phoenix

+0

위의 편집을 참조하십시오. – jamjam

관련 문제