Terminanzeige, vergangene ausblenden

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

  • Terminanzeige, vergangene ausblenden

    Hallo zusammen,

    ich bastele gerade an einer Terminverwaltung. Hier mal der Codeteil, in dem das jeweilige Datum ermittelt wird:

    PHP-Code:

             $heute 
    time();
         
    $adatum 1205501788;
         for (
    $i=0$i<20$i++)
         {
           
    $neu $adatum 1209600;
            
    $ndatum strftime("%d.%m.%Y"$neu);
            
    $adatum $neu;
           
    $skills[] = $ndatum;
               } 
    Das Skript zeigt mir auch, wie gewünscht, alle Freitage im zweiwöchigen Abstand beginnend am kommenden Freitag an. Die User können dann in einer Combo-Box ein Datum aussuchen und sich entsprechen für diesen Termin an oder abmelden. Soweit so gut.

    Mein Problem ist nun, dass ich mal wieder ne Hirnblockade habe. Ich hätte es nun gerne so, das die verstrichenen Termine gar nicht mehr in der Combo-Box erscheinen, so das nur Termine in der Zukunft in das Array geschoben werden.

    Ich habe mein Glück schon mit ner if-Abfrage versucht. Wenn das heutige Datum ($heute) kleiner als das nächste anzuzeigende Datum ist ($adatum) ist, dann mach die Schleife, aber da bringt wirre Ausgaben.

    Kann mir bitte jemand mal einen Tip geben wie ich da vorgehen muss ?!?!


    Danke ! ! !



    Gruß

    Michael
    Gruß

    Michael

  • #2
    PHP-Code:
    $freitag time();
    for (
    $i=0$i<20$i++){
      
    $freitag strtotime("next Friday",$freitag);
      
    $skills[] = strftime("%d.%m.%Y"$freitag);

    so z.B.?
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Hi,

      das macht eigentlich genaus das, was mein Skript auch macht. Es gibt die Folgedaten der nächsten 20 Wochen aus. Bei meinem Skript beginnend ab dem komemnden Freitag. Bei deinem ab den momentanen Datum, egal welcher Wochentag.

      Mein Problem ist, das z.B. bis Freitag der 14.03. in der Auswahlbox erscheinen soll. Ab dem 14.03. soll dann die Liste mit dem 28. beginnen und der 14. gar nicht mehr gelistet werden usw.
      In den Tagen zw. zwei Terminen soll die Liste immer vom ersten nächstfolgenden Termin angeführt werden. Bei Dir erscheinen dann die entsprechenden Wochentage im Zweiwochenabstand.

      Ds Skript sieht nun so aus:

      PHP-Code:
               $freitag 1205501788;
           for (
      $i=0$i<20$i++)
           {
              
      $freitag strtotime("+2 week",$freitag);
                
      $skills[] = strftime("%d.%m.%Y"$freitag);
            } 
      Irgendwo muss doch noch die Entscheidung hin ob der Termin noch bevorsteht oder schon verstrichen ist. Da weiss ich allerdings nicht wie ich ansetzen soll.

      PHP-Code:
               $heute time();
               
      $freitag 1205501788;
           for (
      $i=0$i<20$i++)
           {
              if (
      $freitag != $heute)
                {
                
      $freitag strtotime("+2 week",$freitag);
                
      $skills[] = strftime("%d.%m.%Y"$freitag);
               }      
              } 

      Wäre mein Ansatz, aber das funktioniert nicht so wirklich :-(



      Gruß

      Michael
      Zuletzt geändert von fritzje610; 12.03.2008, 11:39.
      Gruß

      Michael

      Kommentar


      • #4
        Bei deinem ab den momentanen Datum, egal welcher Wochentag.
        Bist du sicher? Der Code sollte auch mit dem nächsten Freitag beginnend vom aktuellen Datum aus beginnen.
        Ab dem 14.03. soll dann die Liste mit dem 28. beginnen und der 14. gar nicht mehr gelistet werden usw.
        PHP-Code:
        if ($freitag != $heute
        kann so auch nicht gehen, weil Freitag mit der Uhrzeit 00:00:00 steht und time() aktuelle Uhrzeit verwendet
        Du könntest du Abfrage so machen
        PHP-Code:
        if(date('d.m.y',$freitag) != date('d.m.y',time()){ 
        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Hallo Tobi,

          ich nehme alles zurück, ich hatte an dem Skript gebastelt. Deshalb funktionierte es nicht mehr richtig.

          Eigentlich funktioniert das Skript schon so wie ich mir das vorstelle. Ich habs jetzt mal im Original von Dir durchprobiert. Allerdings habe ich ja das Problem, das nur alle zwei Wochen die in die Anzeige kommen sollen.

          PHP-Code:
            $freitag strtotime("+2 week",$freitag); 
          bringts dann ja auch nicht, dann nimmt er ja da heutige Datum +14 Tage und füllt damit das array.

          Wie kann ich da immer ein über den anderen Freitag errechnen?
          Dann kann ich mir auch die ganze IF-Abfrage scheken, wenn eh passende Freitage angezeigt werden.


          Gruß

          Michael
          Gruß

          Michael

          Kommentar


          • #6
            PHP-Code:
            $freitag strtotime('next Friday',time());
            for (
            $i=0$i<20$i++){
              if(
            date('d.m.y',$freitag) == date('d.m.y',time())){
                
            $freitag strtotime('next Friday',time()+24*60*60);
                
            $skills[] = strftime("%d.%m.%Y"$freitag);
              }else{
                
            $skills[] = strftime("%d.%m.%Y"$freitag);
              }
              
            $freitag strtotime("+2 week",$freitag);

            Dann kann ich mir auch die ganze IF-Abfrage scheken, wenn eh passende Freitage angezeigt werden.
            Wenn ich dich richtig verstanden habe, dann brauchst du diese Abfrage doch, weil es ja sein kann, dass heute Freitag ist und in diesem Falle willst du ja auf die Anzeige verzichten und mit dem nächsten weitermachen.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              fast. Ich brauche in dem Array, beginnend mit dem kommenden Freitag (14.03.), alle Freitage im zweiwöchigen Abstand. Sprich den, 28.03., 11.04., 25.04. usw. Begrenzt wird die Anzahl der Arrayeinträge durch die Abbruchbedingung der for-Schleife.

              Nun soll bis und incl. dem 14.03. dieser in der Liste erscheinen. Ab dem 15.03. bis incl. dem 28.03. soll dieser die Liste anführen usw.
              Die Freitage dazwischen kann man völlig ausser acht lassen.

              Momentan ist es ja so, dass wenn man das Systemdatum auf den 15.03. stellt ab dem 21.03. vierzehntägig ins Arraay geschrieben wird, es müsste aber der 28. sein.



              Gruß


              Michael
              Gruß

              Michael

              Kommentar


              • #8
                Wenn du einen Array mit allen Freitagen des Jahres hast, kannst du doch über den Arrayindex (gerade oder ungerade) feststellen, ob er in dem gewünschten Rhythmus liegt oder nicht. Zumindest funktioniert das doch bei abwechselnden Terminen.
                Dann musst du doch nur noch in deiner Schleife abfragen, zwischen welchen Freitagen das aktuelle Datum liegt und ob der Rhythmusindex (gerade oder ungerade) zutrifft und ab da mit deiner Ausgabe beginnen.
                Der Ansatz ist halt ganz anders, als dein bisher verfolgter, aber so würde ich es machen.

                Kommentar


                • #9
                  Auch ne Möglichkeit. Jetzt habe ich mich aber schon so viel Zeit in das Problem investiert, jetzt will ich es auch auf diesem Weg lösen.


                  Gruß

                  Michael
                  Gruß

                  Michael

                  Kommentar


                  • #10
                    PHP-Code:
                    $firstValidFriday '2008-03-14';
                    $freitag strtotime($firstValidFriday);
                    for (
                    $i=0$i<20$i++){
                      
                    //Wenn aktueller Tag grösser als $freitag
                      
                    if(date('z',time()) > date('z',$freitag)){
                        
                    $freitag strtotime('+2 week',$freitag);
                      }else{
                        
                    $skills[] = strftime("%d.%m.%Y"$freitag);
                        
                    $freitag strtotime("+2 week",$freitag);
                      }

                    Dann musst du eben das Datum des ersten gültigen Freitags vorgeben
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Vielen Dank für deine Hilfe. Genauso hatte ichmir das gedacht.
                      Allerdings gebe ich zu, dass ich das Zeile für Zeile nochmal durchgehen muss um zu verstehen wie das Skript arbeitet.


                      Gruß

                      Michael
                      Gruß

                      Michael

                      Kommentar

                      Lädt...
                      X