Datum für Mo, Di, Mi, Do, Fr und Sa aus $date Variable erstellen

userjules

Mitglied
Hallo zusammen,

ich stehe vor einem Problem, dass ich nach vielen Versuchen und Lösungsansätzen einfach nicht alleine gelöst bekomme und hoffe hierbei auf Eure Hilfe.

Ich möchte aus einer $date Variable die entsprechenden Daten der dazugehörigen Wochentage generieren.

Also angenommen
PHP:
$date = 2011-08-12;
brauche ich je eine Variable für Montag, Dienstag, Mittwoch usw. also...
PHP:
	// Wochentage (Montag - Samstag)
	$date_mo = ;
	$date_di = ;
	$date_mi = ;
	$date_do = ;
	$date_fr = ;
	$date_sa = ;

Als Grundlage denke ich folgendes verwenden zu können...
PHP:
// Montag bis Freitag der aktuellen Woche anzeigen
$date = mktime(0, 0, 0, date('m'), date('d') - (date('w')) , date('Y'));
for ($i = 0; $i < 6; $i++) {
 $date = strtotime("+1 day", $date);
 echo date('d.m.Y', $date) . "<br>";
}
Ich bekomme es aber nicht hin anstatt der Textausgabe, Variablen zu erstellen.

Die Variablen
PHP:
$tag = substr($date, -2, 2);
$monat = substr($date, -5, 2);
$jahr = substr($date, -10, 4);

stehen auch zur Verfügung um sie in mktime einsetzen zu können d.h. mir ist klar das ich hier nicht einfach $date verwenden kann. Das Problem ist wie erwähnt vielmehr die Erstellung der Variablen für die Wochentage.

Könnt Ihr mir helfen ?
Vielen Dank im Voraus !
 
Zuletzt bearbeitet:
http://www.selfphp.de/funktionsreferenz/datums_und_zeit_funktionen/date.php
http://php.net/manual/de/function.strtotime.php
http://www.php.net/manual/de/datetime.formats.php

PHP:
$datum = "2011-08-12";

# --- ab nach timestamp
$datum_timestamp = strtotime($datum);
$tage = array("Sonntag","","","", "etcpp");

# --- mittels date() den wochentag holen
$wochentag = date("w",$datum_timestamp);

# --- und aus dem array auslesen
echo $tage[$wochentag];
Ist jetzt hingekliert, muß nicht auf Anhieb funktionieren ;)

mfg chmee
 
Zuletzt bearbeitet:
Danke für die Antwort !
Das liefert mir den Namen des Wochentages, ist aber noch nicht das was ich suche.

Ein bisschen weiter bin ich ja schon. Mit...
PHP:
$monat = 8;
$tag = 12;
$jahr = 2011;  
// Montag bis Freitag der aktuellen Woche anzeigen
$date = mktime(0, 0, 0, $monat, $tag - (date('w')), $jahr);
for ($i = 0; $i < 6; $i++) {
 $date = strtotime("+1 day", $date);
 echo date('Y-m-d', $date) . "<br>";
}
bekomme ich die Daten für Montag bis Samstag der Woche.

Ich brauche dieses Ergebnis nun als Variablen.
Die Tage dazu sind zwar ein schönes Feature, für die Aufgabenstellung aber nicht relevant, da ich die Daten in ein sql statement einsetzen möchte.

Danke für eure Mühe !
 
Dann muß ich nochmal fragen, was Dein Anliegen ist. Wenn ich das richtig verstehe:

Gegeben ist:
ein Tag X, zB im Format (yyyy-mm-dd)

Gesucht werden:
Alle Tage, die in der gleichen Woche wie Tag X sind.

Ist das so richtig? Ich kann nicht nachvollziehen, was Du mit
Ich brauche dieses Ergebnis nun als Variablen.
meinst.

mfg chmee
 
Hast du soweit richtig verstanden, aber das hab ich ja auch nun.
Damit ich aber diese Tage, die in der gleichen Woche wie x sind, in ein sql statement einsetzen kann, möchte ich daraus Variablen machen, also...
PHP:
	$date_mo = 'Datum für Montag';
	$date_di = 'Datum für Dienstag';
	$date_mi = 'Datum für Mittwoch';
	$date_do = 'Datum für Donnerstag';
	$date_fr = 'Datum für Freitag';
	$date_sa = 'Datum für Samstag';
... um diese wiederum in sql statements einsetzen zu können.
Zum Beispiel...
PHP:
SELECT * FROM tabelle WHERE date = $date_mo
 
Dass man solche Variablenkonstrukte NICHT macht, sollte Dir wohl klar sein, spätestens seit dem Array(), dass ich oben gezeigt habe ;)

Dennoch, folgende Tipps:
(1) Mit dem Wochentag "w" (wie oben gezeigt) kannst Du schon mal sagen, welcher Tag es ist
(Wert 0 ist Sonntag)
(2) Ist es zB eine 2, ist es ein Dienstag - und Du lässt Dir ein Array berechnen mit den Tagen -1 (2-1=1=Montag) bis +4 (2+4=6=Samstag)
(3) Mit einer foreach-Schleife lässt Du Dir dann die Werte in ein SQL-Statement reinschreiben;)

Obige Links angucken. mfg chmee
 
Ich raffs noch nicht, dafür fehlt mir wohl die Erfahrung mit Arrays.
Könntest du mir bitte Punkt (2) nochmal erläutern !?
Die Links hatte ich mir schon angeguckt bevor ich den ersten Beitrag hier heute geschrieben habe. Hab wohl 'n Brett vor'm Kopf !
 
ich nehme nochmal mein Beispielcode von oben:

PHP:
$datum = "2011-08-12";

# --- ab nach timestamp
$datum_timestamp = strtotime($datum);

# --- mittels date() den wochentag holen
$wochentag = date("w",$datum_timestamp);

echo $datum." ist der ".$wochentag.". Tag der Woche<br/>";
Deine Woche beginnt
mit einem Montag (also in php-Rechnung 1)
und endet mit Tag 6, Samstag.
(Nicht vergessen, Tag 0 ist Sonntag)

Wir brauchen nun die Differenz vom ersten Tag Deiner Woche (Montag) zu Deinem Datum. Nicht sonderlich schwer..
PHP:
$differenz=$wochentag-1;
Von da an zählen wir 6 Tage hoch und lassen uns die Daten in timestamp rausgeben. Timestamp wird in Sekunden gerechnet, ergo ist ein Tag 1440 Sekunden lang. Danach werden wir auch gleich in "echte" Daten machen und jene in einem Array speichern.

Wir mach das ganz simpel mit einer for-Schleife.
PHP:
$tagesliste=array();
for($tag=0;$tag<6;$tag++)
{
  $berechnet=$datum_timestamp-($differenz-$tag)*86400;
  $tagesliste[]=date("Y-m-d",$berechnet);
}
Hier könnte ein logischer Fehler drin sein, ich kritzel grad so aus dem Kopf hin. Zu guter Letzt noch -für Dich- die Ausgabe der Array-Daten.
PHP:
echo "Montag ist ".$tagesliste[0];

# oder als foreach-Schleife
echo "<br/><br/>";
foreach($tagesliste as $einzeln)
{
  echo $einzeln."<br/>";
}

mfg chmee
 
Zuletzt bearbeitet:
Oh Mann, ich bin dir echt dankbar für deine 'Kritzelei', aber da bekomm ich nur den wochentag raus also montag, dienstag, mittwoch...
Ich brauch aber das datum ******
 
Zurück