Problem: Mit PHP frage ich eine MySQL-Datenbank ab und lasse das Ergebnis in einer Schleife ausgeben. Damit in der Schleife die korrekte Kalenderwoche ausgewählt wird, wird am Ende der Schleife immer die aktuelle Kalenderwoche um 1 minimiert
$woche = $woche-1;
Das klappt auch wunderbar, so lange ich mich in einer Kalenderwoche über 10 befinde. Den die Kalenderwochen sind in der Datenbank immer zweistellig abgelegt (01, 02, 09, 10). Der obige Befehl macht aber aus 10-1 = 9 und nicht 09. Die weitere Abfrage funktioniert entsprechend nicht.
Lösung:
Für die Zahlen 0-9 hab ich also eine swich/case Anweisung geschrieben um die Kalenderwoche anzupassen:
switch ($woche) { case "1": $woche = "01"; break; case "2": $woche = "02"; break; case "3": $woche = "03"; break; case "4": $woche = "04"; break; case "5": $woche = "05"; break; case "6": $woche = "06"; break; case "7": $woche = "07"; break; case "8": $woche = "08"; break; case "9": $woche = "09"; break; case "0": $woche = "53"; $jahr = $jahr-1; break; }
Es wird also die Variable $woche auf sein Inhalt geprüft und wenn ein bestimmter Wert (also 0 – 9) enthalten ist, ein neuer Wert gesetzt. Wichtig ist dabei, das der neue Wert in Anführungszeichen gesetzt wird (also „01“) ansonsten wird der neue Wert als integer und nicht als string gespeichert was wiederum dazu führt das die führende 0 entfernt wird.
Ist die Schleife bei 0 angekommen wird der Wert 53 gesetzt und das Jahr um 1 reduziert. Es folgend dann die Datenbankabfragen für das vorherige Jahr.