Tage der Woche

Hallo!
Wie schreibe ich ein Script, dass mir alle Daten(Pl. von Datum)der Tage der aktuellen Woche ausgibt?

Danke im Vorraus!

benutz die date() funktion

dass ist mir auch klar, ich will halt nen Code wie ich das machen kann!

Ok, würde zwar schon fast in die Jobbörse gehören, aber ich bau dir da mal was zusammen.

Mit dem Skript das unten steht, kannst du die Tage immer in folgendem Format ausgeben: Heute ist Sonntag, der 12.11.2006
bzw. Morgen ist Samstag, der 13.11.2006

Um nicht für jeden Tag den du ausgeben möchtest (Morgen, Übermorgen, In 3 Tagen, In 4 Tagen…) einen neuen Block schreiben zu müssen, baust du dir einfach 2 Funktionen

1. Funktion

Nun wie oben im Beispiel (Heute ist Sonntag, der 12.11.2006) wollen wir das Sonntag, Montag, Dienstag usw. haben. PHP gibt uns jedoch nur numerische Werte zurück.
[PHP]date(‚w‘,time())[/php] würde uns heute eine 0 zurückgeben.
0 steht für Sonntag. Die 1 folglich für Montag usw.

Die folgende Funktion gibt uns für jeden numerischen Wert den Tagnamen zurück:
[PHP]
function w($w)
{
switch($w)
{
case 0:
return „Sonntag“;
break;
case 1:
return „Montag“;
break;
case 2:
return „Dienstag“;
break;
case 3:
return „Mittwoch“;
break;
case 4:
return „Donnerstag“;
break;
case 5:
return „Freitag“;
break;
case 6:
return „Samstag“;
break;
}
}
[/PHP]

2. Funktion

Um nachher die Daten ausgeben zu können, arbeiten wir mit timestamps.
Timestamps bekommst du durch time(). Der Rückgabewert von time sind die Sekunden seit dem 1.1.1970. Um den Timestamp für morgen zu bekommen, rechnen wir also time() plus die anzahl der Sekunden, die ein Tag hat (24*60^2).

Folgende funktion rechnet für uns je nach parameter den timestamp aus. übermitteln wir eine 0, kommt der timestamp für heute heraus, übermitteln wir eine 1, kommt der Timestamp für morgen heraus, usw.
[PHP]
function d($d)
{
$time = time();
for ($i = 0; $i<$d; $i++)
{
$time += 24*60^2;
}
return $time;
}
[/PHP]

Die Ausgabe

Nun können wir soviele nächste Tage ausgeben wie wir möchten.
Um das obrige beispiel auszugeben wäre z.b. dieser Code möglich
[PHP]
echo(„Heute ist „.w(date(‚w‘,d(0))).“, der „.date(‚d.m.Y‘,d(0)).“
\n“);
[/PHP]
zur erläuterung:
w(date(‚w‘,d(0))) gibt uns den Tagnamen. date(‚w‘,d(0)) gibt uns den numerischen wert für den heutigen Wochentag. Drumherum wird also unsere Funktion w() gebaut, die uns den numerischen Wert in einen Namen umwandelt.
Ergebnis wäre zum beispiel Sonntag
date(‚d.m.Y‘,d(0)) gibt uns anschließend das heutige Datum aus.

Wenn du jetzt „Morgen“ ausgeben möchtest kannst du einfach unserer Funktion d() eine 1 übermitteln, für heute +1 tag.
Für morgen wäre der Codeschnipsel also
[PHP]
echo(„Morgen ist „.w(date(‚w‘,d(1))).“, der „.date(‚d.m.Y‘,d(1)).“
\n“);
[/PHP]

Wie du siehst musst du nur den Wert der funktion d() ändern

Eine ganze Woche ausgeben

Wenn du jetzt die nächsten 7 Tage oder mehr ausgeben willst, bietet es sich an, die Ausgabe auch noch in eine for() - Schleife zu packen. dann musst du nicht immer Deinen Code hinschreiben.
[PHP]
echo(„Heute ist „.w(date(‚w‘,d(0))).“, der „.date(‚d.m.Y‘,d(0)).“
\n“);
for($i=1; $i<=7; $i++)
{
echo(„In „.$i.“ Tag(en) ist „.w(date(‚w‘,d($i))).“, der „.date(‚d.m.Y‘,d($i)).“
\n“);
}
[/PHP]

Aber achtung!
Ein Tag hat:

24*60*60 = 24*3600 = 86400 Sekunden

Zudem macht es keinen Sinn diesen Wert jedesmal in der Funktion neu zu berechnen. Ein einfaches
[PHP]
define(‚ONE_DAY‘, 86400);
[/PHP]
im Kopf des Skriptes hilft Rechenzeit zu sparen.

246060 = 24*60^2

PHP kann mit dem operator „^“ arbeiten? Ich dachte immer man müsste da [phpnet]pow[/phpnet] benutzen.

Im übrigen wäre das Arbeiten mit einem Array wesentlich einfacher als mit einer Switch-Case Abfrage…

[php]$tage = array(„Sonntag“,„Montag“,„Dienstag“,„Mittwoch“,„Donnerstag“,„Freitag“,„Samstag“);
//So sollte es ebenfalls gehen:
setlocale(LC_TIME, „de_DE“);
$tag = date(‚I‘, d(0));
[/php]

Dann kannste schreiben

[php]echo "Heute ist ".$tage[date(‚w‘,d(0))]. " … ";
//Bzw. wenn das zweite klappt:
echo "Heute ist „.$tag.“ … ";[/php]