kills Geschrieben 7. Oktober 2002 Geschrieben 7. Oktober 2002 hi leute... ich habe ein php script das die kalenderwoche anzeigt und daraufhin noch den inhalt aus einer datenbank der zu dieser kalenderwoche gehört... nun wollte ich in den kopf der tabelle (also wo auch die Kw drinne steht) unter die kw schreiben das z.b die 41 kw dem 7.okt - 11 okt entspricht.. wie schon im beispiel zu sehen sollte der befehl auf arbeitstage beschränkt sein... also WE haben keine bedeutung.. --------- weiterhin möchte ich das in meiner vorhanden datenbank die feiertage die so durchs jahr kommen eingetragen werden und dem user somit den zugriff auf dieser felder verweigern... sprich: ich habe nen stinknormalen kalernder und ich möchte das sich die feiertage darin berechnen lassen und nicht vorher von hand eingegeben werden müssen Zitieren
Schledo Geschrieben 7. Oktober 2002 Geschrieben 7. Oktober 2002 //Errechnet das Datum des letzten Arbeitstages (Freitag) einer übergebenen Kalenderwoche und des Jahres function KWtoDate($eingabe, $jahr) { $tag_jahresbeginn = mktime(0, 0, 0, 1, 1, $jahr); switch(date("l", $tag_jahresbeginn)) { case "Monday" : $einige_tage = 4; break; case "Tuesday" : $einige_tage = 3; break; case "Wednesday" : $einige_tage = 2; break; case "Thursday" : $einige_tage = 1; break; case "Friday" : $einige_tage = 0; break; case "Saturday" : $einige_tage = 5; break; case "Sunday" : $einige_tage = 6; break; default : print "Dieser Satz darf nie erscheinen, sonst ist ******** passiert !"; break; } $tage_bis_ziel_kw = ($eingabe - 1) * 7 + $einige_tage; $datum_in_ziel_kw = mktime(0, 0, 0, 1 , 1 + $tage_bis_ziel_kw, date("Y")); //print "KW $eingabe in diesem Jahr endet am : ". date ("l d F", $datum_in_ziel_kw); $ziel_tag = date("d", $datum_in_ziel_kw); $ziel_monat = date("m", $datum_in_ziel_kw); $ziel_jahr = date("Y", $datum_in_ziel_kw); $Zieldatum = "$ziel_tag.$ziel_monat.$ziel_jahr"; return $Zieldatum; } [/PHP] Ist nicht ganz professionell, denke aber daraus kann man das ganz leicht machen was Du benötigst. Da diese Funktion immer den Freitag ausrechnet müsste man nur die par Tage zurück miteinbeziehen. Hoffe es hilft. Zitieren
kills Geschrieben 7. Oktober 2002 Autor Geschrieben 7. Oktober 2002 $eingabe = die aktuelle kw?!?! $jahr das aktuelle jahr oder?!?! was macht die zeile "return $zieldatum" ?!?! was macht die zeile return $zieldatum bzw was macht der befehl return!?! Zitieren
Schledo Geschrieben 7. Oktober 2002 Geschrieben 7. Oktober 2002 Original geschrieben von kills $eingabe = die aktuelle kw?!?! $jahr das aktuelle jahr oder?!?! Ja was macht die zeile "return $zieldatum" ?!?! was macht die zeile return $zieldatum bzw was macht der befehl return!?! Dieser Befehl gibt das errechnete Datum der Funktion (den Freitag) zurück, d.h. wenn die sie z.B. so aufrufst "$test = KWtoDate(22, 2002);" steht in $test das entsprechende Datum. Zitieren
kills Geschrieben 7. Oktober 2002 Autor Geschrieben 7. Oktober 2002 dann is das ergebnis der freitag der kw 22 des jahres 2002 ?!? kann ich auch irgendwie deutsches datumsformat nehmen.. also ich meine das man anstatt october halt oktober ausgibt usw.... Zitieren
Schledo Geschrieben 7. Oktober 2002 Geschrieben 7. Oktober 2002 Er gibt überhaupt keinen Monatsnamen zurück, der zurückgegebene Wert sieht z.B. so aus : TT.MM.JJJJ Zitieren
kills Geschrieben 9. Oktober 2002 Autor Geschrieben 9. Oktober 2002 wird mit return $ Zieldatum schon das datu ausgegeben oder muss ich noch echo "$zieldatum"; machen!? Zitieren
Schledo Geschrieben 9. Oktober 2002 Geschrieben 9. Oktober 2002 Nein, die Rückgabe ist nur eine Rückgabe, keine Ausgabe, d.h. Du müsstest es noch mit echo/print ausgeben. Sag mal, wie oft hast du schon mit PHP oder anderen Programmiersprachen gearbeitet :confused: Zitieren
kills Geschrieben 9. Oktober 2002 Autor Geschrieben 9. Oktober 2002 sry ich programiere php seit 3 wochen und habe vorher noch nie programiert... Zitieren
Schledo Geschrieben 9. Oktober 2002 Geschrieben 9. Oktober 2002 Merkt man, aber das wird schon, bei Fragen immer fragen Zitieren
kills Geschrieben 9. Oktober 2002 Autor Geschrieben 9. Oktober 2002 jo mach ich auch.... btw: mit tutorials kann ja jeder anfangen.. ich hab halt gleich richtig angefangen.. Zitieren
MiH Geschrieben 9. Oktober 2002 Geschrieben 9. Oktober 2002 tutorials helfen aber meisten anfängerfehler zu vermeiden und andere lösungsansätze zu sehen. Zitieren
kills Geschrieben 16. Oktober 2002 Autor Geschrieben 16. Oktober 2002 wenn ich diese funktion kwtodate mit der kw=1 und Jahr=2002 ausführe passt das ergebnis nicht. warum!?! mit allen anderen daten ist die funktion 100% richtig ((((((( Zitieren
Schledo Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 Weil meines Wissen nach PHP mit der Kalenderwoche bei sowas komisch reagiert, es rechnet rein oberflächlich betrachtet glaube ich mit KW 0 bzw. unter Umständen auch mit KW 53 Morgen bin ich wieder im Betrieb, da kann ich Dirs genau sagen ... Zitieren
kills Geschrieben 17. Oktober 2002 Autor Geschrieben 17. Oktober 2002 ?? d.h das ich die kw= 0 einsetzen muss um kw 1 zu erhalten?!?? wie kann das sein?! dann hätte ja laut php das jahr 45kw.....?°?°? Zitieren
Schledo Geschrieben 17. Oktober 2002 Geschrieben 17. Oktober 2002 Wie kommst Du eigentlich auf 45 ? Ich rate Dir einfach mal selber ein wenig mit den Datumsfunktionen zu testen, bevor Du hier fragst. Vieles klärt sich von selbst, wenn man nur selber mal nachschlägt (wie auch das mit dem sauberen HTML in Deinem anderen Beitrag) Zitieren
kills Geschrieben 17. Oktober 2002 Autor Geschrieben 17. Oktober 2002 Original geschrieben von Schledo Wie kommst Du eigentlich auf 45 ? ajo wenn es kw 0 und 43 gibt.. ..mh rofl das jahr hat ja 52 kw ..ich meinte natürlich 53 .... Zitieren
AlexBossi Geschrieben 17. Oktober 2002 Geschrieben 17. Oktober 2002 Hi, also zum Problem mit der Kalenderwoche: PHP zählt die Wochen vom ersten Sonntag des Jahres an, also wenn dann der 1.1. z.B. ein Donnerstag ist, so ist der erste Sonntag der 4.1. und erst ab dem 4.1. die Woche wird gezählt! Du mußt einfach die Funktion ausführen, die Dir die Kalenderwoche zurückgibt und dann prüfen ob der 1.1. ein Sonntag ist, wenn nicht mußt Du einfach Deine KW um eins erhöhen! Bis denn...:marine Zitieren
Schledo Geschrieben 18. Oktober 2002 Geschrieben 18. Oktober 2002 Genau so war es, wollte es auch gerade posten (habe es so ähnlich in meinem Quellcode hier mal wo vermerkt), deswegen ist auch KW 0 bzw. KW 53 möglich. Zitieren
kills Geschrieben 13. November 2002 Autor Geschrieben 13. November 2002 kann ich die funktion jetzt mit der richtigen kw ansteuern?! d.h also mit 54 usw. oder muss ich der funktion die 53kw uebergeben damit sie mir die 54kw ausspuckt!? --------- wie kann ich abprüfen ob der 1.1 ein sonntag ist?! kann mir jemand den quelltext posten. ich blick durch die funktion kwtodate nicht so ganz durch. Zitieren
kills Geschrieben 13. November 2002 Autor Geschrieben 13. November 2002 Originally posted by AlexBossi Du mußt einfach die Funktion ausführen, die Dir die Kalenderwoche zurückgibt und dann prüfen ob der 1.1. ein Sonntag ist, wenn nicht mußt Du einfach Deine KW um eins erhöhen! Bis denn...:marine function gibdatum($kw, $jahr, $wo) {//Errechnet das Datum des letzten Arbeitstages (Freitag) einer übergebenen Kalenderwoche und des Jahres /* $wo=0 == Freitag $wo=1 == Donnerstag $wo=2 == Mittwoch $wo=3 == Dienstag $wo=4 == Montag ... */ $marke = 0; $tag_jahresbeginn = mktime(0, 0, 0, 1, 1, $jahr); switch(date("l", $tag_jahresbeginn)) { case "Monday" : $einige_tage = 4;$kw++; break; // <---- case "Tuesday" : $einige_tage = 3;$kw++; break; // <---- case "Wednesday" : $einige_tage = 2;$kw++; break; // <---- case "Thursday" : $einige_tage = 1;$kw++; break; // <---- case "Friday" : $einige_tage = 0;$kw++; break; // <---- case "Saturday" : $einige_tage = 5;$kw++; break; // <---- case "Sunday" : $einige_tage = 6; break; default : print "Fehler in Function GibDatum oder falsche® Übergabeparameter!"; break; } $tage_bis_ziel_kw = ($kw - 1) * 7 + $einige_tage; $tagesdatum_wo = mktime(0, 0, 0, 1 , 1 + $tage_bis_ziel_kw-$wo, $jahr); $tag = date("d", $tagesdatum_wo); $monat = date("m", $tagesdatum_wo); $jahr = date("Y", $tagesdatum_wo); $dat = "$monat/$tag/$jahr"; return $dat; } hier mein quellcode. die funktion hat halt jetzt nen anderen namen aber is ja egal. habe ich das só richtig verstanden?! sry wegen dem doppelten post Zitieren
kills Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 PHP:-------------------------------------------------------------------------------- //Errechnet das Datum des letzten Arbeitstages (Freitag) einer übergebenen Kalenderwoche und des Jahres function KWtoDate($eingabe, $jahr) { $tag_jahresbeginn = mktime(0, 0, 0, 1, 1, $jahr); switch(date("l", $tag_jahresbeginn)) { case "Monday" : $einige_tage = 4; break; case "Tuesday" : $einige_tage = 3; break; case "Wednesday" : $einige_tage = 2; break; case "Thursday" : $einige_tage = 1; break; case "Friday" : $einige_tage = 0; break; case "Saturday" : $einige_tage = 6; break; // <--- Hier war der fehler !! "5" & "6" war vertauscht case "Sunday" : $einige_tage = 5; break; default : print "Dieser Satz darf nie erscheinen, sonst ist ******** passiert !"; break; } $tage_bis_ziel_kw = ($eingabe - 1) * 7 + $einige_tage; $datum_in_ziel_kw = mktime(0, 0, 0, 1 , 1 + $tage_bis_ziel_kw, date("Y")); //print "KW $eingabe in diesem Jahr endet am : ". date ("l d F", $datum_in_ziel_kw); $ziel_tag = date("d", $datum_in_ziel_kw); $ziel_monat = date("m", $datum_in_ziel_kw); $ziel_jahr = date("Y", $datum_in_ziel_kw); $Zieldatum = "$ziel_tag.$ziel_monat.$ziel_jahr"; return $Zieldatum; } ---------------------------------- hier nun die korrekte funktion funzt 100% richtig ) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.