PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

11-12-2020, 09:47
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
Feiertage
Ich habe folgendes array:
PHP-Code:
if ($feiertage == "Sachsen") {
$ftage = array("01.01" =>"Neujahrstag", "03.04" =>"Karfreitag", "06.04" =>"Ostermontag", "01.05" =>"Tag der Arbeit", "14.05" =>"Christi Himmelfahrt", "25.05" =>"Pfingstmontag", "04.06" =>"Fronleichnam\n(LK Bautzen,Westlausitzkreis)", "03.10" =>"Tag der Deutschen Einheit", "31.10" =>"Reformationstag", "18.11" =>"Buß- u. Bettag", "25.12" =>"1. Weihnachtsfeiertag", "26.12" =>"2. Weihnachtsfeiertag" );
}
Auslesen tu ich wie folgt:
PHP-Code:
foreach($ftage as $datum => $feiertag) { $datumfeiertag = $datum.".".$jahr;
$timestamp_montag = strtotime("{$jahr}-W{$kalenderwoche}"); $time_mo = date("d.m.Y", $timestamp_montag); if ($time_mo == $datumfeiertag) { $planmontag = "<font color='red'>$time_mo <img src='../images/hilfe.png' title='{$feiertag}'/></font>"; } else { $planmontag = $time_mo; }}
Tage natürlich für die gesamte Woche!
Nur leider markiert es mir nur den letzten Feiertag aus dem array.
|

12-12-2020, 20:01
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.802
|
|
Worked as designed
PHP-Code:
$planmontag = '';
foreach($ftage as $datum => $feiertag) {
...
if ($time_mo == $datumfeiertag) {
$planmontag .= "<font color='red'>$time_mo <img src='../images/hilfe.png' title='{$feiertag}'/></font>";
} else {
$planmontag .= $time_mo;
}
}
echo $planmontag;
Stichwort Zeichenkettenverknüpfung.
Gruß
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

12-12-2020, 21:37
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
Erstmal Danke.
So hatte ich es auch schon, nur leider kommt das Ergebnis da raus:
Fr, 25.12.202025.12.202025.12.202025.12.202025.12.202025.12.202025.12.202025.12.202025.12.202025.12.2020 25.12.2020  25.12.2020
Es werden genau alle Arraypunkte (12 mal) angezeigt.
|

13-12-2020, 19:36
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.802
|
|
Ich dachte, du wolltest eine Liste ausgeben. Dann sag doch mal, was genau du vorhast.
Gruß
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

13-12-2020, 19:45
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
Ich hab einen "Schichtplan" mit Datum der KW. Mo bis So.
Er soll nachschauen, ob Tage davon Feiertage sind.
Anzeigen tut es mir nur den 26.12. nicht den 25.12.
|

13-12-2020, 19:49
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
Aber das ist momentan nicht wirklich das wichtigste, denn sas Zeiten speichern und bearbeiten funktioniert noch nicht. Andere hier im Forum trauen sich auch nicht daran.
|

14-12-2020, 09:18
|
chorn
Registrierter Benutzer
|
|
Registriert seit: Nov 2011
Beiträge: 213
|
|
Dein Code gibt ja auch jedes Ergebnis aus, wenn du das nicht willst, musst du das halt anpassen, die Stelle ist
PHP-Code:
if ($time_mo == $datumfeiertag) { $planmontag .= "<font color='red'>$time_mo <img src='../images/hilfe.png' title='{$feiertag}'/></font>"; } else { $planmontag .= $time_mo; }
|

14-12-2020, 10:17
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
Ja und ohne .= gibt er nur die letzte Stelle 26.12. aus und mit .= zeigt er den 25.12. und 26.12. aber 12 mal.
|

14-12-2020, 10:39
|
chorn
Registrierter Benutzer
|
|
Registriert seit: Nov 2011
Beiträge: 213
|
|
OK. Problem gelöst? Weil Anforderung nicht definiert.
|

14-12-2020, 10:44
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
wie Anforderung nicht definiert?
|

14-12-2020, 11:56
|
chorn
Registrierter Benutzer
|
|
Registriert seit: Nov 2011
Beiträge: 213
|
|
Hat Peter auch schon angesprochen
Zitat:
Dann sag doch mal, was genau du vorhast.
|
Du sagst es zeigt den 25.12. nicht an, dabei taucht der 25.12. in deiner Liste auf. Dann sagst du es zeigt dir ein Datum 12 mal an - stimmt, genau wie der Code das vorgibt, also alles OK.
Zitat:
Er soll nachschauen, ob Tage davon Feiertage sind.
|
Ja tut das Script doch.
|

14-12-2020, 12:26
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
In diesem Forum kann ich nur sagen, hilf Dir selbst, sonst bist Du verlassen.
Das ist die Lösung und funktioniert tatellos!
PHP-Code:
$timestamp_montag = strtotime("{$jahr}-W{$kalenderwoche}"); $time_mo = date("d.m.Y", $timestamp_montag);
$time_mox = date("d.m", $timestamp_montag); if(array_key_exists($time_mox, $ftage)) { $planmontag = "<font color='red'>$time_mo <img src='../images/hilfe.png' title='$ftage[$time_mox]'/></font>"; } else { $planmontag = $time_mo; }
Geändert von Andreas-LE (14-12-2020 um 12:39 Uhr)
|

14-12-2020, 14:36
|
chorn
Registrierter Benutzer
|
|
Registriert seit: Nov 2011
Beiträge: 213
|
|
Lösung für welches Problem? Hast du immer noch nicht gesagt. Du erzählst doch nur Quatsch.
|

14-12-2020, 14:39
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
Jetzt zeigt es alle Feiertage aus dem Array nach KW an!
KW 52 wird der 25. und 26.12. als Feiertag markiert und angezeigt, welcher Feiertag ist.
|

14-12-2020, 20:28
|
Andreas-LE
Registrierter Benutzer
|
|
Registriert seit: Nov 2020
Beiträge: 27
|
|
Lösung
Ich bin blutiger Anfänger in PHP, aber nun möchte ich wenigstens die Lösung hier darstellen.
Datumsvergleich mit gesetzter KW!
Feiertage:
PHP-Code:
$jahr = date("Y");
// Feiertag function feiertag($tag, $monat, $jahr) { $ausgabe = ""; foreach (feiertage($jahr) as $ftag => $zeitstempel) { if ($zeitstempel == date("U", mktime(0, 0, 0, $monat, $tag, $jahr))) { $ausgabe .= $ftag; } } return $ausgabe; }
// Feiertage (gesetzliche- kirchliche- und Brauchtumstage) function feiertage($jahr) {
// Die festen Feiertage $ftag["Neujahr"] = mktime(0, 0, 0, 1, 1, $jahr); $ftag["Heilige 3 Könige"] = mktime(0, 0, 0, 1, 6, $jahr); $ftag["Internationaler Frauentag"] = mktime(0, 0, 0, 3, 8, $jahr); $ftag["Tag der Arbeit"] = mktime(0, 0, 0, 5, 1, $jahr); $ftag["Maria Himmelfahrt"] = mktime(0, 0, 0, 8, 15, $jahr); $ftag["Tag der deutschen Einheit"] = mktime(0, 0, 0, 10, 3, $jahr); $ftag["Reformationstag"] = mktime(0, 0, 0, 10, 31, $jahr); $ftag["Allerheiligen"] = mktime(0, 0, 0, 11, 1, $jahr); $ftag["1. Weihnachtsfeiertag"] = mktime(0, 0, 0, 12, 25, $jahr); $ftag["2. Weihnachtsfeiertag"] = mktime(0, 0, 0, 12, 26, $jahr);
$ftag["Valentinstag"] = mktime(0, 0, 0, 2, 14, $jahr); $ftag["Walpurgisnacht"] = mktime(0, 0, 0, 4, 30, $jahr); $ftag["Sommersonnenwende"] = mktime(0, 0, 0, 6, 21, $jahr); $ftag["Erntedankfest"] = strtotime("Sunday October " . $jahr); $ftag["Kirchweih"] = strtotime("third Sunday October " . $jahr); // Allerweltskirchweih! $ftag["Halloween"] = mktime(0, 0, 0, 10, 31, $jahr); $ftag["Martinstag"] = mktime(0, 0, 0, 11, 11, $jahr); $ftag["Nikolaus"] = mktime(0, 0, 0, 12, 6, $jahr); $ftag["Wintersonnenwende"] = mktime(0, 0, 0, 12, 22, $jahr); $ftag["Heiligabend"] = mktime(0, 0, 0, 12, 24, $jahr); $ftag["Silvester"] = mktime(0, 0, 0, 12, 31, $jahr); // Hier weitere Feiertage (Geburtstage etc.) eintragen
// Zeitumstellung $ftag["Winterzeit Ende!\nZeitumstellung auf Sommerzeit\n(3 Uhr - 1 Stunde vor)"] = strtotime('-1 week sun april' . $jahr); $ftag["Sommerzeit Ende!\nZeitumstellung auf Winterzeit\n(3 Uhr - 1 Stunde zurück)"] = strtotime('-1 week sun november' . $jahr);
// Muttertag berechnen $ftag["Muttertag"] = mktime(0, 0, 0, 5, (14 - date("w", mktime(0, 0, 0, 5, 0, $jahr))), $jahr);
// Ostersonntag berechnen $ostern = strtotime("+ " . (easter_days($jahr)) . " days", mktime(0, 0, 0, 3, 21, $jahr));
// Die beweglichen Feiertage, abhängig vom Ostersonntag $ftag["Karfreitag"] = strtotime("-2 day", $ostern); $ftag["Ostersonntag"] = strtotime("0 day", $ostern); $ftag["Ostermontag"] = strtotime("+1 day", $ostern); $ftag["Ch. Himmelfahrt, Vatertag"] = strtotime("+39 day", $ostern); $ftag["Pfingstsonntag"] = strtotime("+49 day", $ostern); $ftag["Pfingstmontag"] = strtotime("+50 day", $ostern); $ftag["Fronleichnam"] = strtotime("+60 day", $ostern);
$ftag["Rosenmontag"] = strtotime("-48 day", $ostern); $ftag["Faschingsdienstag (Fastnacht)"] = strtotime("-47 day", $ostern); $ftag["Aschermittwoch"] = strtotime("-46 day", $ostern); $ftag["Palmsonntag"] = strtotime("-7 day", $ostern); $ftag["Weißer Sonntag"] = strtotime("+7 day", $ostern);
// Erster Advent berechnen $advent = strtotime("+1 sunday",mktime(0,0,0,11,27,$jahr));
// Die beweglichen Feiertage, abhängig vom ersten Advent $ftag["Buß- und Bettag "] = strtotime("-11 day", $advent);
$ftag["1. Advent "] = strtotime("+0 day", $advent); $ftag["2. Advent "] = strtotime("+7 day", $advent); $ftag["3. Advent "] = strtotime("+14 day", $advent); $ftag["4. Advent "] = strtotime("+21 day", $advent); $ftag["Totensonntag "] = strtotime("last sunday", $advent); $ftag["Volkstrauertag "] = strtotime("-14 day", $advent); asort($ftag); return $ftag;
}
Datumsvergleich:
PHP-Code:
// Montag $timestamp_montag = strtotime("{$jahr}-W{$kalenderwoche}"); $time_mo = date("d.m.Y", $timestamp_montag); $time_mox = date("d.m", $timestamp_montag); $teile = explode(".", $time_mox); $feiertag = feiertag($teile[0], $teile[1], $jahr); // Tag, Monat, Jahr if ($feiertag !== "") { $planmontag = "<font color='red'>$time_mo <img src='../images/hilfe.png' title='$feiertag'/></font>"; } else { $planmontag = $time_mo; }
Ich hab es bei mir noch verfeinert und nach Bundesland selectierbar gemacht.
Geändert von Andreas-LE (14-12-2020 um 20:40 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|