2011-01-08 12 views
1

Das macht mich wirklich verrückt, also bitte helfen.Wählen Sie das aktuelle Datum mit PHP

Ich habe diesen Code wie unten gezeigt, es zeigt eine Liste von Daten für die nächsten 7 Tage.

Dinge, die ich den Code erreichen möchte.

  1. Display „Heute und‚Tomorrow‘statt dem entsprechende Datum.
  2. Sobald ein Datum Add ausgewählt ist‚aktuelle‘Klasse, auf diese Weise mit einer anderen Farbe hervorgehoben.
  3. ‚Heute‘sollen standardmäßig ausgewählt werden, wenn die Seite zum ersten Mal geladen.

der folgende Code erreicht diese Anforderungen

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

?> 

Allerdings musste ich die Formatierung des Datums von d-m-Y nach Y-m-d ändern.

Als Ergebnis dieser dritten Anforderung ist die standardmäßig angewählte Option "Today" nicht mehr verfügbar.

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

?> 

Kann mir bitte jemand helfen.

Vielen Dank im Voraus

Ich habe das jetzt

Aber ich fürchte, es die Klasse auf Seite laden nicht hinzuzufügen. Also "Heute" ist standardmäßig nicht hervorgehoben.

Habe ich etwas vermasselt?

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

Was ist Ihre Frage? Wo steckst du fest? –

+0

Was ist '$ _GET ['Datum'] 'mit gefüllt? – webbiedave

+0

Hallo Pekka, Nun, ich möchte das Problem beheben, das durch das Ändern des Datumsformats entsteht. – jamjam

Antwort

1

Ok, so ist das Problem in $ _GET [ 'date'] nicht dann eingestellt wird, nicht wahr?

Was Sie tun müssen, ist nicht $ _GET ['Datum'] in der Logik verwenden. Tun Sie etwas wie folgt aus:

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

Dann nutzen Sie $ GDATE in der Logik. Wenn $ _GET ['date'] gesetzt ist, wird es verwendet, ansonsten wird das heutige Datum verwendet. Übrigens, Sie müssen nicht strtotime verwenden, um das heutige Datum zu bekommen, nur date("Y-m-d"); wird es bekommen, weil das zweite Argument für das Datum auf die aktuelle Zeit voreingestellt ist.

+0

Hallo Phonix. Ich habe versucht, Ihre Lösung zu integrieren, aber ich habe Probleme damit es funktioniert. Können Sie mir bitte zeigen, wie ich es zu meinem ursprünglichen Code hinzufügen würde. Danke noch einmal. – jamjam

+0

Fügen Sie es über die Deklarationen von '$ today' und' $ tomorrow' hinzu und ersetzen Sie alle Instanzen von '$ _GET ['date']' durch '$ gdate', mit Ausnahme der' $ _GET ['date'] 's in der Code oben. – Phoenix

+0

Bitte siehe bearbeiten oben – jamjam

Verwandte Themen