In einer Spalte nach dem DATE suchen, das am nähsten zurück liegt

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Hab ich probiert, bin leider an dem Umfang des Quelltexts gescheitert. kannste mir sagen wo genau? danke.

    Kommentar


    • hmm,

      kannst du mir das Script mal zumailen ? jbb@joelh.de bitte

      Kommentar


      • hmm,

        so sollte es gehen, ich hab die neuen Zeilen mit dem kommentar // ist neu !!!!! gekennzeichnet und die veränderten/erweiterten mit // ist erweitert !!! sollte nur ein paar sein !
        Code:
        <?php
        $heutejahr = date("Y",time());
        $heute = date("d.m.Y",time());
        $timerer = date("m",time());
        $timererer = date("d",time());
        $timestamp = mktime(0,0,0,$timerer,$timererer,$heutejahr);
        $conn = mysql_connect("mysql.domainfactory.de", "xxx", "xxx");
        if ($conn)
                {
                       mysql_select_db("xxx",$conn);
                       $result = mysql_query("SELECT name, tag FROM jahrgangsstufe",$conn);
                       $doedel=1;
                       $anzahl=1;
                       while($zeileholen=mysql_fetch_array($result,$conn))
                                {
                                        $schueler[$anzahl]["name"] = $zeileholen["name"];
                                        $schueler[$anzahl]["tag"] = $zeileholen["tag"];
                                        $anzahl++;
                                        $doedel++;
                                }
                        $anzahl--;
                        for ($i=1;$i<=$anzahl;$i++)
                                {
                                        $datum = explode ("-",$schueler[$i]["tag"]); //splittet das Datum auf, wir brauchen nur tag und Monat
                                        $schueler[$i]["timestamp"] = mktime(0,0,0,$datum[1],$datum[2],$heutejahr); // jeder bekommt ein timestamp in diesem Jahr
                                }
                         for ($i=1;$i<=$anzahl;$i++)
                                {
                                        $schueler[$i]["abgerechnet"] = $timestamp - $schueler[$i]["timestamp"];  // jetzt wird heute abgezogen
                                 }
                         // so jetzt haben wir schonmal eine Liste , jetzt muss sie sortiert werden.
                         // zuerst die postiven Absteigend, dann die negativen vom kleinsten an.
                         // denn ddas geht dann ja von 31.12. runter auf heute.
                         $positiv = 0;
                         $negativ = 0;
                         $heute  = 0;
                         for ($i=1;$i<=$anzahl;$i++)
                                {
                                        if ( $schueler[$i]["abgerechnet"] > 0)
                                                {
                                                        $positiv++;
                                                }
                                        if ( $schueler[$i]["abgerechnet"] < 0)
                                                {
                                                        $negativ++;
                                                }
                                }
        				 $dieshierzaehlt = 0;
                         for ($i=1;$i<=$anzahl;$i++)
                                {
        
                                        if ($schueler[$i]["abgerechnet"] == 0)
                                                {
        											$reihenfolge[$dieshierzaehlt]["name"] = $schueler[$i]["name"];
        											$reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$i]["timestamp"]; // ist neu !!!!!
                                                        $dieshierzaehlt++;
                                                }
                                }
        
                         for ($i=1;$i<=$positiv;$i++)
                                {
                                        $momstand = 1000*24*60*60;  // 1000 Tagegibt es nicht
                                        $aktuell = 0;
                                        for($n=1;$n<=$anzahl;$n++)
                                                {
                                                        if($schueler[$n]["abgerechnet"] > 0)
                                                                {
                                                                        if ($schueler[$n]["abgerechnet"] < $momstand)        
        																    // wir suchen den kleinsten Abstand zu heute
                                                                                {
        																			$momstand =  $schueler[$n]["abgerechnet"];
        																			$aktuell = $n;
                                                                                }
                                                                }
                                                }
                                        $reihenfolge[$dieshierzaehlt]["name"] = $schueler[$aktuell]["name"];
                                        $reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$aktuell]["timestamp"];  // ist neu !!!!
        								$dieshierzaehlt++;
                                        $schueler[$aktuell]["abgerechnet"] = 0;
                                }
                            for ($i=1;$i<=$negativ;$i++)
                                {
                                        $momstand = 0;  // 1000 Tage gibt es nicht
                                        $aktuell = 0;
                                        for($n=1;$n<=$anzahl;$n++)
                                                {
                                                        if ($schueler[$n]["abgerechnet"] < 0)
                                                                {
                                                                        if ($schueler[$n]["abgerechnet"] < $momstand)            
        																// wir suchen die kleinste Zahl
                                                                                {
        																			$momstand =  $schueler[$n]["abgerechnet"];
        																			$aktuell = $n;
                                                                                }
                                                                }
                                                }
                                        $reihenfolge[$dieshierzaehlt]["name"] =$schueler[$aktuell]["name"];
                                        $reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$aktuell]["timestamp"]; // ist neu !!!!
        								$dieshierzaehlt++;
                                        $schueler[$aktuell]["abgerechnet"] = 0;
                                }
                echo"<B><U>Als letztes hatten Geburtstag:</U></B><BR><BR>";
                for($i=1;$i<=3;$i++)     // gibt die ersten drei aus, ist variabel !
                        {
                                echo $reihenfolge[$i]["name"]. " am ".date("d.M.Y",$reihenfolge[$i]["timestamp"])."<br>"; // ist erweitert !!!!
                        }
                echo"<HR SIZE=\"1\">";
        
               $heute_geburtstag = mysql_query("SELECT name FROM jahrgangsstufe WHERE DAYOFYEAR(tag)=DAYOFYEAR(NOW())");
               while($row = mysql_fetch_array($heute_geburtstag))
               { $geburtstagskind = $row[0]; }
               if (!$geburtstagskind)
                {
                echo "<FONT COLOR=\"FF0000\">Heute, am <B>"; echo date("d.m.y");
        echo "</B> feiert niemand aus unserer Jahrgangsstufe Geburtstag.
        <BR></FONT>";
                echo "<HR SIZE=\"1\">";
                }
               else{
                 echo "<FONT COLOR=\"FF0000\">Heute, am <B>"; echo date("d.m.y");
        			echo "</B> feiert $geburtstagskind Geburtstag <BR></FONT>";
                 echo "<HR SIZE=\"1\">";}
        
               echo"<B><U>Als nächstes haben Geburtstag:</U></B><BR>";
        
                for($i=$anzahl;$i>=$anzahl-3;$i--)     // gibt die letzten drei aus,ist variabel !
                        {
                                echo $reihenfolge[$i]["name"]." am ";   // ist erweitert !!!!!
        						echo date("d.M.Y",$reihenfolge[$i]["timestamp"])."<br>"; // ist neu !!!!!
                        }
        
        
           }
        
        ?>

        Kommentar


        • Hey danke....

          es kommt noch ein kleines Fehlerchen, kannst du noch mal
          auf die URL schauen http://www.larsi.net/abi2001/anfang.php

          und dir anschauen wer als nächstes Geburtstag hat?
          Da kommt als erstes "am 01.Jan 1970"
          Ist bestimmt nur ein Flüchtigkeitsfehler...

          Hier noch mal das Script.
          Wenn das dann weg ist, dann haben wirs endlich geschafft!!!

          <?php
          $heutejahr = date("Y",time());
          $heute = date("d.m.Y",time());
          $timerer = date("m",time());
          $timererer = date("d",time());
          $timestamp = mktime(0,0,0,$timerer,$timererer,$heutejahr);
          $conn = mysql_connect("mysql.domainfactory.de", "xxx", "xxx");
          if ($conn)
          {
          mysql_select_db("xxx",$conn);
          $result = mysql_query("SELECT name, tag FROM jahrgangsstufe",$conn);
          $doedel=1;
          $anzahl=1;
          while($zeileholen=mysql_fetch_array($result,$conn))
          {
          $schueler[$anzahl]["name"] = $zeileholen["name"];
          $schueler[$anzahl]["tag"] = $zeileholen["tag"];
          $anzahl++;
          $doedel++;
          }
          $anzahl--;
          for ($i=1;$i<=$anzahl;$i++)
          {
          $datum = explode ("-",$schueler[$i]["tag"]); //splittet das Datum auf, wir brauchen nur tag und Monat
          $schueler[$i]["timestamp"] = mktime(0,0,0,$datum[1],$datum[2],$heutejahr); // jeder bekommt ein timestamp in diesem Jahr
          }
          for ($i=1;$i<=$anzahl;$i++)
          {
          $schueler[$i]["abgerechnet"] = $timestamp - $schueler[$i]["timestamp"]; // jetzt wird heute abgezogen
          }
          // so jetzt haben wir schonmal eine Liste , jetzt muss sie sortiert werden.
          // zuerst die postiven Absteigend, dann die negativen vom kleinsten an.
          // denn ddas geht dann ja von 31.12. runter auf heute.
          $positiv = 0;
          $negativ = 0;
          $heute = 0;
          for ($i=1;$i<=$anzahl;$i++)
          {
          if ( $schueler[$i]["abgerechnet"] > 0)
          {
          $positiv++;
          }
          if ( $schueler[$i]["abgerechnet"] < 0)
          {
          $negativ++;
          }
          }

          $dieshierzaehlt = 0;
          for ($i=1;$i<=$anzahl;$i++)
          {

          if ($schueler[$i]["abgerechnet"] == 0)
          {
          $reihenfolge[$dieshierzaehlt]["name"] = $schueler[$i]["name"];
          $reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$i]["timestamp"];
          $dieshierzaehlt++;
          }
          }

          for ($i=1;$i<=$positiv;$i++)
          {
          $momstand = 1000*24*60*60; // 1000 Tage gibt es nicht
          $aktuell = 0;
          for($n=1;$n<=$anzahl;$n++)
          {
          if ($schueler[$n]["abgerechnet"] > 0)
          {
          if ($schueler[$n]["abgerechnet"] < $momstand) // wir suchen den kleinsten Abstand zu heute
          {
          $momstand = $schueler[$n]["abgerechnet"];
          $aktuell = $n;
          }
          }
          }
          $reihenfolge[$dieshierzaehlt]["name"] = $schueler[$aktuell]["name"];
          $reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$aktuell]["timestamp"];
          $dieshierzaehlt++;
          $schueler[$aktuell]["abgerechnet"] = 0;
          }
          for ($i=1;$i<=$negativ;$i++)
          {
          $momstand = 0; // 1000 Tage gibt es nicht
          $aktuell = 0;
          for($n=1;$n<=$anzahl;$n++)
          {
          if ($schueler[$n]["abgerechnet"] < 0)
          {
          if ($schueler[$n]["abgerechnet"] < $momstand) // wir suchen die kleinste Zahl
          {
          $momstand = $schueler[$n]["abgerechnet"];
          $aktuell = $n;
          }
          }
          }
          $reihenfolge[$dieshierzaehlt]["name"] = $schueler[$aktuell]["name"];
          $reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$aktuell]["timestamp"];
          $dieshierzaehlt++;
          $schueler[$aktuell]["abgerechnet"] = 0;
          }
          echo"<B><U>Als letztes hatten Geburtstag:</U></B><BR><BR>";
          for($i=1;$i<=3;$i++) // gibt die ersten drei aus, ist variabel !
          {
          echo $reihenfolge[$i]["name"]. " am ".date("d.M.Y",$reihenfolge[$i]["timestamp"])."<br>";
          }
          echo"<HR SIZE=\"1\">";

          $heute_geburtstag = mysql_query("SELECT name FROM jahrgangsstufe WHERE DAYOFYEAR(tag)=DAYOFYEAR(NOW())");
          while($row = mysql_fetch_array($heute_geburtstag))
          { $geburtstagskind = $row[0]; }
          if (!$geburtstagskind)
          {
          echo "<FONT COLOR=\"FF0000\">Heute, am <B>"; echo date("d.m.y"); echo "</B> feiert niemand aus unserer Jahrgangsstufe Geburtstag. <BR></FONT>";
          echo "<HR SIZE=\"1\">";
          }
          else{
          echo "<FONT COLOR=\"FF0000\">Heute, am <B>"; echo date("d.m.y"); echo "</B> feiert $geburtstagskind Geburtstag <BR></FONT>";
          echo "<HR SIZE=\"1\">";}

          echo"<B><U>Als nächstes haben Geburtstag:</U></B><BR>";

          for($i=$anzahl;$i>=$anzahl-3;$i--) // gibt die letzten drei aus, ist variabel !
          {
          echo $reihenfolge[$i]["name"]." am ";
          echo date("d.M.Y",$reihenfolge[$i]["timestamp"])."<br>";
          }


          }

          ?>

          Kommentar


          • for($i=$anzahl-1;$i>=$anzahl-3;$i--) // gibt die letzten drei aus, ist variabel !

            CAT Music Files

            Kommentar


            • Danke, hat funktioniert! Also designmäßig ist es jetzt
              perfekt und gefält mir sehr gut!

              Wie sollte es aber anders sein? Ich habe einen Bug entdeckt.
              Heute ist der 20.12. Gestern hat er richtig angezeigt das jemand am 19. also gestern - HEUTE Geburtstag hat.

              am 20. aber zeigt er den, der am 19. hatte nicht unter den letzten dreien mit auf.

              Ich glaube ich hatte das schon mal, da war der jenige dann erst einen Tag später zu sehen. bin mir aber nich sicher. woran kann das liegen?

              thanx, Larsi

              Kommentar


              • DAYOFYEAR(tag)=DAYOFYEAR(NOW())

                Ich weiß nicht, von wem du gehostet wirst, aber unter Umständen der Zeitverschiebung wegen...?

                CAT Music Files

                Kommentar


                • Das DAYOFYEAR(tag)=DAYOFYEAR(NOW()) funktioniert ja einwandfrei. Es wird nur benötigt für den Fall das Heute jemand geburtstag hat. und das klappt auch wunderbar.
                  Doch, wenn gestern jemand geburtstag hatte, dann wird er nicht angezeigt, bei denen die als letztes hatte...

                  werde von domainfactory.de gehostet. dürfte keine probleme geben.

                  irgendein wert scheint noch nicht zu stimmen für den fall das jemand einen tag vor heute geburtstag hatte...

                  Kommentar


                  • wollt ihr nicht mal bei kleinem ein neues thread aufmachen? das geht ja gar nicht hier
                    h.a.n.d.
                    Schmalle

                    http://impressed.by
                    http://blog.schmalenberger.it



                    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                    ... nur ohne :-)

                    Kommentar


                    • hmm,

                      schmalle du musst ja nicht jedesmal auf Seite eins anfangen zu lesen wenn du das Topic anschaust *ggg*

                      @Larsi,
                      hmm, also lass dir mal die ganze liste ausgeben und schaumal was so alles drin steht , dann erkennst du vielleicht ein System. Ich weiss jetzt nicht warum das nicht geht.

                      Kommentar


                      • Ähm... ganze Liste ausgeben? so sehr bin ich durch den quelltext noch nicht durchgestiegen. wie mach ich das?

                        Kommentar


                        • hmm,

                          for($i=1;$i<=3;$i++) // gibt die ersten drei aus, ist variabel !

                          in

                          for($i=1;$i<=$anzahl;$i++) // gibt alle aus, ist variabel !

                          ändern. und dann mal die Reihenfolge betrachten was da schief geht in der Liste.

                          Kommentar


                          • Das kam raus:


                            Ein Name fehlt, nämlich der der gestern geburtstag hatte...
                            ----------------------------------------------

                            Philipp Böhmig am 17.Dec.2001
                            Silvia Wurm am 17.Dec.2001
                            Thomas Herklotz am 10.Dec.2001
                            Matthias Neubert am 06.Dec.2001
                            Katharina Kaiser am 21.Nov.2001
                            Anja Kallauch am 19.Nov.2001
                            Melanie Schreiber am 15.Nov.2001
                            Franziska Mittag am 12.Nov.2001
                            Ines Koch am 28.Oct.2001
                            Julia Hänsel am 18.Oct.2001
                            Claudia Querner am 01.Oct.2001
                            Yvonne Querner am 01.Oct.2001
                            Angela Herrmann am 24.Sep.2001
                            Markus Hartig am 23.Sep.2001
                            Daniel Großmann am 22.Sep.2001
                            Robert Neugabauer am 20.Sep.2001
                            Sebastian Flegel am 16.Sep.2001
                            Stefan Bosdorf am 15.Sep.2001
                            Manuela Winkler am 13.Sep.2001
                            Thomas Rentsch am 09.Sep.2001
                            Nadia Schnorrbusch am 03.Sep.2001
                            Katrin Menzel am 31.Aug.2001
                            Katja Röhl am 21.Aug.2001
                            Lars Großmann am 09.Aug.2001
                            Uwe Biscop am 09.Aug.2001
                            Dana Mühlbauer am 07.Aug.2001
                            Matthias Metzke am 06.Aug.2001
                            Matthias Zocher am 06.Aug.2001
                            Maik Kießling am 03.Aug.2001
                            Stephanie Naumann am 28.Jul.2001
                            Linn Truxa am 19.Jul.2001
                            Heike Hilbenz am 16.Jul.2001
                            Robert Endler am 16.Jul.2001
                            Claudia Schöne am 12.Jul.2001
                            Tina Weirauch am 09.Jul.2001
                            Claudia Schier am 08.Jul.2001
                            Martin Schubert am 08.Jul.2001
                            Nadine Lotzmann am 08.Jul.2001
                            Robert Magiera am 30.Jun.2001
                            Carsten Müller am 29.Jun.2001
                            Friederike Schöbel am 29.Jun.2001
                            Yvonne Kretzschmar am 23.Jun.2001
                            Kathrin Hantzsche am 21.Jun.2001
                            Sandro Haubold am 14.Jun.2001
                            Karin Hofmann am 13.Jun.2001
                            Anne Reimann am 05.Jun.2001
                            André Grobstieg am 02.Jun.2001
                            Anne Bergmann am 02.Jun.2001
                            Carina Hoppstock am 31.May.2001
                            Patrick Wernicke am 28.May.2001
                            Matthias Rothe am 26.May.2001
                            Evelyn Babatz am 21.May.2001
                            Jan Helas am 18.May.2001
                            Franziska Buchner am 13.May.2001
                            Jan Schulz am 12.May.2001
                            Frank Jahn am 30.Apr.2001
                            Janine Rooch am 28.Apr.2001
                            René Bonkowski am 19.Apr.2001
                            Emanuel Thomas am 17.Apr.2001
                            Nicole Schmidt am 11.Apr.2001
                            Ronny Otte am 05.Apr.2001
                            Katja Günther am 23.Mar.2001
                            Torsten Leuthold am 17.Mar.2001
                            Konrad Schütze am 26.Feb.2001
                            Magnus Thiemig am 26.Feb.2001
                            Robert Hantzsche am 19.Feb.2001
                            Rena Förster am 07.Feb.2001
                            Andreas Känner am 30.Jan.2001
                            Juliane Schlicke am 30.Jan.2001
                            Silvia Großmann am 21.Jan.2001
                            Steve Weidig am 13.Jan.2001
                            Andrej Balzer am 30.Nov.2000
                            Anja Böhme am 30.Nov.2000
                            Anja Kowalke am 30.Nov.2000
                            Anne Philip am 30.Nov.2000
                            Dirk Hantzsche am 30.Nov.2000
                            Fanny Nitschke am 30.Nov.2000
                            Gerd Hübner am 30.Nov.2000
                            Ilka Fiedler am 30.Nov.2000
                            Jan Lorber am 30.Nov.2000
                            Johannes Kuhnert am 30.Nov.2000
                            Katharina Mittag am 30.Nov.2000
                            Marc Paulitz am 30.Nov.2000
                            Marcel Lindner am 30.Nov.2000
                            Maria Barthel am 30.Nov.2000
                            Markus Starzetz am 30.Nov.2000
                            Martin Spillner am 30.Nov.2000
                            Matthias Böhm am 30.Nov.2000
                            Matthias Hommel am 30.Nov.2000
                            Michael Fuchs am 30.Nov.2000
                            René Mundt am 30.Nov.2000
                            Reni Gabel am 30.Nov.2000
                            Ronny Forke am 30.Nov.2000
                            Sebastian Kiontke am 30.Nov.2000
                            Sebastian Thieme am 30.Nov.2000
                            Steffi Berndt am 30.Nov.2000
                            Thomas Nebel am 30.Nov.2000
                            Thomas Wähnert am 30.Nov.2000
                            Tobias Klengel am 30.Nov.2000
                            Torsten Beger am 30.Nov.2000
                            André Krämer am 30.Dec.2001
                            Christiane Höfgen am 29.Dec.2001
                            Sven Kotte am 24.Dec.2001
                            am 01.Jan.1970


                            Kommentar


                            • hmm,

                              seltsam, hab jetzt keine Idee dazu, vielleicht ist das die 1.1.1970 Leiche, hmm, warte mal ab was morgen passiert, wenn er dann immernoch weg ist ist es sehr seltsam, ansonsten ist es nur misterös, weiss gerade nicht an was es liegt , sorry.

                              Kommentar


                              • ich vermute morgen ist er da. Ich hab das schon mal beobachtet, aber nicht gezielt verfolgt.. ob das was mit 1970 zu tun hat weiß ich auch nich,...

                                mal sehen wies morgen ausschaut!

                                danke erstmal. cu Lars

                                Kommentar

                                Lädt...
                                X