[MySQL 4.0] Geburtstage Heute und der letzten Woche anzeigen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Original geschrieben von paddy
    Mein Problem ist nun, kann ich Geburtstage auslesen, die sowohl in der letzten als auch in der ersten KW des neuen Jahres liegen ?
    Warum bist du denn ständig so auf die Kalenderwoche fixiert ...?

    Üblich ist es doch, die Geburtstage der nächsten X Tage oder meinetwegen auch die innerhalb von einer Woche (7 Tage) auszugeben - warum legst du solchen Wert auf die Kalenderwoche ...?


    Für eine Abfrage der Geburtstage innerhalb der +/-X letzten Tage würde ich DAYOFYEAR benutzen, und dann schauen, ob die Differenz zum DAYOFYEAR des Abfragedatums kleiner X oder größer 365-X ist.
    Bei Schaltjahren müsste man sich dann ggf. noch überlegen, ob und wo man die Grenzen um einen Tag verändert, o.ä.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #17
      Hallo paddy
      Was ist denn jetzt mit
      YEARWEEK(Dat) BETWEEN YEARWEEK(date_sub(curdate(),interval 7 day) AND YEARWEEK(Curdate())

      Kommentar


      • #18
        Original geschrieben von wahsaga
        Warum bist du denn ständig so auf die Kalenderwoche fixiert ...?
        Weil ich einen Kalender habe, der für die nächste Kalenderwoche alle Termin anzeigen soll. Ich dachte mir, vielleicht könnte man das über eine SQL -Query lösen...

        Für eine Abfrage der Geburtstage innerhalb der +/-X letzten Tage würde ich DAYOFYEAR benutzen, und dann schauen, ob die Differenz zum DAYOFYEAR des Abfragedatums kleiner X oder größer 365-X ist.
        Bei Schaltjahren müsste man sich dann ggf. noch überlegen, ob und wo man die Grenzen um einen Tag verändert, o.ä.
        Hmm, da ich in meinem Kalender blättere und mir somit das aktuell ausgewählte Datum über $_GET hole, bekomme ich mit jeder Abfrage Probleme, wenn sich die aktuelle Woche über eine Jahresgrenze erstreckt. Man kann das bestimmt irgendwie lösen, aber ich wüsste momentan nicht wie... Wie soll das mit DAYOFYEAR funktionieren, wenn ein Geburtstag auf den 30.12.2007 fällt und der nächste in der gleichen Kalenderwoche auf 01.01.2008 (SQL)?

        Mit PHP, was ich jetzt eher favorisiere, würde ich wahrscheinlich eine FOR-Schleife benutzen und alle Tage der Kalenderwoche nacheinander abarbeiten...

        Kommentar


        • #19
          So, das ganze mal in PHP gefasst und funktioniert...

          Wobei
          PHP-Code:
          $data_date explode(".",$_GET["datum"]);
          $tageszahl $data_date[0];
          $monat $data_date[1];
          $jahreszahl $data_date[2];

          $today_wd_x date("w",mktime(0,0,0,$data_date[1],$data_date[0],$data_date[2])); 
          ist.

          PHP-Code:
          ### Ersten und letzten Tag der Woche errechnen -->
              /* Wenn aktueller Tag Sonntag ist -> Zurückrechnen auf Montag, sonst Differenzrechnung */
              
          If ($today_wd_x == 0) {
                  
          $arr_last_weekday split("-",date("Y-m-d",mktime(0,0,0,$monat,$tageszahl,$jahreszahl)));
                  
          $arr_first_weekday split("-",date("Y-m-d",mktime(0,0,0,$monat,$tageszahl-6,$jahreszahl)));
                  
          $last_weekday gregoriantojd($arr_last_weekday[1],$arr_last_weekday[2],$arr_last_weekday[0]);
                  
          $first_weekday gregoriantojd($arr_first_weekday[1],$arr_first_weekday[2],$arr_first_weekday[0]);
              }Else{
                  
          $diff_f_day 1-$today_wd_x;
                  
          $diff_l_day 7-$today_wd_x;
                  
          $arr_last_weekday split("-",date("Y-m-d",mktime(0,0,0,$monat,($tageszahl+$diff_l_day),$jahreszahl)));
                  
          $arr_first_weekday split("-",date("Y-m-d",mktime(0,0,0,$monat,($tageszahl+$diff_f_day),$jahreszahl)));
                  
          $last_weekday gregoriantojd($arr_last_weekday[1],$arr_last_weekday[2],$arr_last_weekday[0]);
                  
          $first_weekday gregoriantojd($arr_first_weekday[1],$arr_first_weekday[2],$arr_first_weekday[0]);
              }
              
              FOR (
          $d=$first_weekday;$d<=$last_weekday;$d++) {
                  
          $arr_present_day split("/",jdtogregorian($d));
                  
          $present_day $arr_present_day[2]."-".$arr_present_day[0]."-".$arr_present_day[1];
                  
          $geb_query_4  "SELECT id, geb_name, YEAR(geb_datum) AS geb_jahr FROM termin_gburtstage WHERE ";
                  
          $geb_query_4 .= "DATE_FORMAT(geb_datum,'".$arr_present_day[2]."-%c-%e') = '".$present_day."'";
                  
          $geb_result_4 mysql_query($geb_query_4) OR die(mysql_error());
                  
          $geb_anzahl_4 mysql_num_rows($geb_result_4);
                  If (
          $geb_anzahl_4 != 0) {
                      WHILE (
          $geb_fetch_4 mysql_fetch_array($geb_result_4)) {
                          print (
          "ID:".$geb_fetch_4["id"]." ;Name:".$geb_fetch_4["geb_name"]." ;Geb.jahr".$geb_fetch_4["geb_jahr"]."<br>");
                      }
                  }
              } 
          Zuletzt geändert von ; 21.05.2006, 12:15.

          Kommentar


          • #20
            Original geschrieben von fuser
            Hallo paddy
            Was ist denn jetzt mit
            YEARWEEK(Dat) BETWEEN YEARWEEK(date_sub(curdate(),interval 7 day) AND YEARWEEK(Curdate())
            Wenn ich nicht in meinem Kalender blättern wollen würde, würde das imo funktionieren...

            Kommentar

            Lädt...
            X