Bestimmten Tag ermitteln

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

  • Bestimmten Tag ermitteln

    Hallo,

    ich möchte in einen Kalender, der auf eine MySQL-Datenbank aufsetzen einen regelmäßig wiederkehrenden Termin einfügen. Leider wird von diesem phpNuke-Kalender keine entsprechende Funktion zur Verfügung gestellt.

    Ich möchte jetzt entweder diretk per SQL oder über PHP und ein mysql_query per PHP diesen wiederkehrenden Termin einfügen. Das Problem dabei ist, dass es sich hiebei immer um den dritten Samstag im Monat handelt.

    Gibt es eine SQL- bzw. eine PHP-Funktion, um diese Daten zu ermitteln?

    Danke, Chriss

  • #2
    Re: Bestimmten Tag ermitteln

    Original geschrieben von Tomcat Chriss
    Das Problem dabei ist, dass es sich hiebei immer um den dritten Samstag im Monat handelt.

    Gibt es eine SQL- bzw. eine PHP-Funktion, um diese Daten zu ermitteln?
    in php:

    ermittle zunächst, welcher wochentag der erste des monats ist.

    wenn es kein samstag ist, addiere die notwendige anzahl an tagen dazu, um auf den nächsten samstag zu kommen; z.b. an einem donnerstag rechne datum + 2, um zum ersten samstag zu kommen. donnerstag gleich monatserster, daraus folgt also, der erste samstag im monat ist der dritte.

    anschliessend addierst du noch zwei wochen = 14 tage drauf, und hast den dritten samstag in diesem monat: hier der siebzehnte.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ich hab das jetzt mal gecodet, aber ich bekomme nicht ausgegeben. Weiß einer, wo ich einen Fehler hab und hat evtl. einer noch eine Idee für ein besseres Script?

      PHP-Code:
      <?php

      for ($i 1$i 13$i++)
      {
          
      $stunde 0;
          
      $minute 0;
          
      $sekunde 0;
          
      $tag 1;
          
      $jahr 2004;
          
      $monat $i;

          
      $eingabedatum date("D"mktime($stunde$minute$sekunde$monat$tag$jahr));
          
          switch (
      $eingabedatum)
          {
              case 
      "Mon":
                  
      $tag $tag 19;
              break;
              
              case 
      "Tue":
                  
      $tag $tag 18;
              break;
              
              case 
      "Wed":
                  
      $tag $tag 17;
              break;
              
              case 
      "Thu":
                  
      $tag $tag 16;
              break;
              
              case 
      "Fri":
                  
      $tag $tag 15;
              break;
              
              case 
      "Sat":
                  
      $tag $tag 14;
              break;
              
              case 
      "Sun":
                  
      $tag $tag 20;
              break;
              
              
      $ausgabedatum date("D"mktime($stunde$minute$sekunde$monat$tag$jahr));    
              
              echo 
      $tag.".".$monat.".".$jahr.": ".$ausgabedatum."<br>";
          }
      }

      ?>
      Danke, Chriss

      Kommentar


      • #4
        könnte daran liegen, dass die schließende klammer deines switch zuweit unten steht, schau dir das nochmal an...

        du gehst vor der ausgabe mit break raus, daher wird dein echo niemals nie nich ausgeführt
        EDIT:
        mir persönlich gefällt folgendes besser:
        PHP-Code:
        for ($i=1$i<13$i++)
            echo 
        date('d.m.Y'strtotime('3rd saturday'mktime(000$i12004))).'<br />'
        Zuletzt geändert von mrhappiness; 12.01.2004, 20:32.
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Stimmt, ist mir gar nicht aufgefallen. Deine Variante ist auch nicht schlecht , aber ich finde meine besser

          Danke, Chriss

          Kommentar


          • #6
            jedem tierchen...

            verschieben tu ich's trotzdem
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Hallo,

              habe kleines Problemchen. In der Variable $datum bekomme ich jetzt das richtige Datum und dieses möchte ich mit folgendem Query in die Datenbank einfügen:
              PHP-Code:
              $query "INSERT INTO events (eventDate, endDate) VALUES (".$datum.", ".$datum.");";
              mysql_query($query) or die("Fehler!"); 
              Hierbei habe ich aber das Problem, dass das Datum immer nur als "0000-00-00" in die Datenbank eingetragen wird. Die Spalte ist als DATE deklariert mit dem Standardwert 0000-00-00, wobei ich die richtige Reihenfolge von Monat und Jahr breücksichtige habe.

              Das Datum wird auch korrekt ausgegeben, nachdem ich den Datumsstring als date('Y-m-d', ...) formatiert habe. Direkt vor dem Query lasse ich mir das $datum noch einmal ausgeben und da bekomme ich die korrekte Ausgabe.

              Wo hab ich denn bloß noch einen Fehler?

              Danke, Chriss

              Kommentar


              • #8
                PHP-Code:
                $query "
                  INSERT INTO 
                    events (eventDate, endDate) 
                  VALUES 
                    ('"
                .$datum."', '".$datum."');
                "
                ;
                mysql_query($query) or die("Fehler!"); 
                so sollte es gehn ...
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  or die("Fehler!"); ist suboptimal ... mit or die("Fehler:".mysql_error()); hättest du den fehler schnell(er) gefunden
                  Kissolino.com

                  Kommentar


                  • #10
                    Hallo Wurzel,

                    ich fange SQL-Fehlermeldungen jetzt so ab, wie du es mir vorgeschlagen hast, aber es ist ja kein SQL-Fehler aufgetreten.

                    Er durchläuft das Script einwandfrei, füllt alle Felder (habe den Rest in dem Testscript herausgelassen) genau so, wie ich sie haben möchte, füllt halt nur die Datumsfelder mit Nullen, anstatt mit dem korrekten Datum.

                    Und nach Beendigung der Abarbeitung kommt nur noch ein kleines "FERTIG!", das ich eingebaut habe, wenn die Schleife fertig abgearbeitet wurde.

                    Es kommt allerdings keine Fehlermeldung. Muss ich das ermittelte Datum irgendwie anders formatieren? Für die Datenbank brauch ich wie gesagt das Format YYYY-MM-DD und genau so übergebe ich es auch an die Datenbank.

                    Warum geht es dann nicht richtig?

                    Danke, Chriss

                    Kommentar


                    • #11
                      mach aus
                      PHP-Code:
                      $query="INSERT ..."
                      mal
                      PHP-Code:
                      echo $query="INSERT ..."
                      wie sieht die fertige abfrage denn aus?
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Ich hab den Fehler gefunden. Er hat mir das einzufügende Datum in der Query direkt ohne Hochkommas eingefügt. Hab die Hochkommas eingefügt und shcon geht's.

                        Danke, Chriss

                        Kommentar

                        Lädt...
                        X