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

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #76
    Ich administriere mit phpmyadmin... meine db heisst db20684
    ich hab nur immer geändert, weil ich das nicht unbedingt hier veröffentlichen wollte... wo muss ich es dann nu ändern? Ich krieg die Kriese :-) (Bei mir kommt übrigens überhaupt nichts... ich habe nur einen leeren Kasten vor mir :-( )

    Derzeitiger Stand:

    <?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","db20684","xxxxx");

    if ($conn) {
    mysql_select_db("db20684",$conn) or die('Fehler bei DB-Auswahl: '.mysql_error());

    $resid = mysql_query("SELECT name, tag FROM jahrgangsstufe");

    for ($i=1;$i<=mysql_num_rows($resid);$i++) {
    $tempdata = mysql_fetch_array($resid);
    $zeileholen["name"][$i] = $tempdata[namenspalte];
    $zeileholen["tag"][$i] = $tempdata[datumspalte];
    }
    $anzahl = 1;
    $doedel = 1;
    while($doedel<=mysql_num_rows($resid))
    {

    usw...

    Comment


    • #77
      hier,

      $conn = mysql_connect("mysql.domainfactory.de","db20684","xxxxx");

      ist das db20684 falsch, es sei denn dass das dein username ist mit der du auf die DB zugreifst

      ansonsten ist alles richtig. Du musst ja nicht die richtigen posten es reicht ja wenn du weisst was du ändern musst wenn man dir was sagt was du ändern sollst. Der rest sollte okay sein.

      Comment


      • #78
        Das ist ja der Username. Bei allen anderen Sachen komme ich doch auch mit dem Namen so rein... Wieso klappt das bloß hier nicht????ß Das was du vorhin gepastet hast, war übrigens nur ein Kommentar-Schmierzettel, und hatte nix zu sagen....

        Comment


        • #79
          ahha,

          der username ist gleich des datenbanknamens. naja warum auch nicht, ist ja bei f2s auch so. hmm, und das script geht nicht ? sehr seltsam.

          könntest du mit phpmyadmin mal einen dump der DB machen und hier posten, zumindestens einen teilauschnitt ? Das geb ich dann hier mal ein und schau mal, also das script an sich funzt, das ist es irgendwie nicht

          Comment


          • #80
            Ok, hier ein kleiner Ausschnitt:

            # phpMyAdmin MySQL-Dump
            # version 2.2.0
            # http://phpwizard.net/phpMyAdmin/
            # http://phpmyadmin.sourceforge.net/ (download page)
            #
            # Host: localhost
            # Erstellungszeit: November 29, 2001, 4:18 pm
            # Server Version: 3.23.42
            # PHP Version: 4.0.6
            # Datenbank : `db20684`
            # --------------------------------------------------------

            #
            # Tabellenstruktur für Tabelle `jahrgangsstufe`
            #

            DROP TABLE IF EXISTS jahrgangsstufe;
            CREATE TABLE jahrgangsstufe (
            key tinyint(3) NOT NULL default '0',
            name varchar(50) NOT NULL default '',
            tag date NOT NULL default '0000-00-00',
            died date NOT NULL default '0000-00-00',
            history longtext NOT NULL,
            activity text NOT NULL,
            adresse varchar(70) NOT NULL default '',
            verheiratet tinyint(1) NOT NULL default '0',
            newname varchar(50) NOT NULL default '',
            wohnort varchar(70) NOT NULL default '',
            telefon varchar(20) NOT NULL default '',
            handy varchar(20) NOT NULL default '',
            email varchar(50) NOT NULL default '',
            icq int(10) NOT NULL default '0',
            homepage varchar(70) NOT NULL default '',
            bildurl varchar(70) NOT NULL default '0',
            lastmodified timestamp(14) NOT NULL
            ) TYPE=MyISAM COMMENT='Jahrgangsstufe des HGR 2001';

            #
            # Daten für Tabelle `jahrgangsstufe`
            #

            INSERT INTO jahrgangsstufe (key, name, tag, died, history, activity, adresse, verheiratet, newname, wohnort, telefon, handy, email, icq, homepage, bildurl, lastmodified) VALUES (20,'André Grobstieg','1982-06-02','0000-00-00','2001 - Abitur am HGR','macht sein Abitur am HGR','Pulsnitzer Straße 65e','','','01454, Radeberg','03528-445207','0172-9361107','housemeister2@gmx.de',115779449,'http://www.housemeister2k.de.vu','http://www.abi01.de/hgr/passpics/andre_grobstieg.jpg',20011124223611),
            (51,'André Krämer','1982-12-30','0000-00-00','2001 - Grundwehrdienst in Holzminden','leistet seinen Grundwehrdienst in Holzminden','Flügelweg 59','','','01454, Radeberg','03528-445581','0174-2771035','kraemer@secondsense.de',76012506,'http://www.kraemi.com','http://www.abi01.de/hgr/passpics/andre_kraemer.jpg',20011109215502),
            (44,'Andreas Känner','1983-01-30','0000-00-00','2001 - Studium an der TU-Dresden','studiert an der TU-Dresden','Wüllnerstraße 39','','','01139, Dresden','0351-8474678','0175-8303223','andreas.kaenner@gmx.de',108651711,'','http://www.abi01.de/hgr/passpics/andreas_kaenner.jpg',20011129155542),


            usw....

            Comment


            • #81
              so,

              jetzt aber

              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("localhost", "board", "board");
              if ($conn)
                      {
                             mysql_select_db("db20684",$conn);
                             $result = mysql_query("SELECT * 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++;
                                                      }
                                      }
                               for ($i=1;$i<=$anzahl;$i++)
                                      {
              
                                              if ($schueler[$i]["abgerechnet"] == 0)
                                                      {
                                                              echo $schueler[$i]["name"]." hat heute Geburtstag<br>";
                                                      }
                                      }
              
                               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;
                                                                                      }
                                                                      }
                                                      }
                                              echo $schueler[$aktuell]["name"]."<br>";
                                              $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;
                                                                                      }
                                                                      }
                                                      }
                                              echo $schueler[$aktuell]["name"]."<br>";
                                              $schueler[$aktuell]["abgerechnet"] = 0;
                                      }
              
                 }
              ?>
              Hier ist jetzt der gesamte Code der auch funktioniert, bei mir getestet, du musst nur oben entsprechend die zugriffstdaten austauschen.

              also in mysql_connect , der rest sollte gehen. kopier das mal raus und speichers so aufem Server und für es aus, wenn es geht kannste noch immer den ganzen Designkram einbauen !

              Comment


              • #82
                Soweit so gut... aber erstmal kann ich mit der großen Liste nicht viel anfangen. Wie geb ich denn nun den/die jeweiligen gewünschten Namen aus??? kannste mir das noch verraten? Der link ist der selbe, schaus dir mal an...

                Comment


                • #83
                  hmm,

                  das kommt morgen ich hab jetzt Feierabend

                  Naja das ist wieder so eine Sache weil das über 3 Schleifen ausgegeben wird. Du kannst ja schonmal werkeln, also anstatt alles direkt aus zu geben, schreibst du zuerst die sachen in ein neues Array und dann gibst du soviel vom Array aus wie du willst,

                  oder du wartest bis morgen, dann so gegen 10 Uhr sollte es fertig sein.

                  Comment


                  • #84
                    hmm,

                    ich hab jetzt Feierabend.



                    Morgen früh gehts weiter, die Idee ist alles anstatt aus zu geben zuerst in ein Array zu schreiben und dann soviel vom Array aus zu geben wie man will.



                    Naja oder du wartest bis morgen so um 10 Uhr, dann sollte ich es spätestens haben

                    Comment


                    • #85
                      ok, ich glaube ich lasse lieber die finger davon, und hoffe, das du morgen die Zeit für mich noch irgendwie übrig hast, das wär echt spitze... in diesem Sinne... bis morgen... Larsi

                      Comment


                      • #86
                        hmm,

                        dies ist der Code ab Zeile 48 also dier ersten 47 Zeilen bleiben.

                        Code:
                                         $dieshierzaehlt = 0;
                                         for ($i=1;$i<=$anzahl;$i++)
                                                {
                        
                                                        if ($schueler[$i]["abgerechnet"] == 0)
                                                                {
                                                                        $reihenfolge[$dieshierzaehlt]["name"] = $schueler[$i]["name"];
                                                                        $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"];
                                                        $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"];
                                                        $dieshierzaehlt++;
                                                        $schueler[$aktuell]["abgerechnet"] = 0;
                                                }
                                for($i=0;$i<=10;$i++)     // gibt die ersten Zehn aus, ist variabel !
                                        {
                                                echo $reihenfolge[$i]["name"]."<br>";
                                        }
                        
                           }
                        ?>

                        Comment


                        • #87
                          Hey, coole Sache... werd ich gleich mal testen, wenn ich nach Hause komme... Danke erstmal!

                          Comment


                          • #88
                            Re: hmm,

                            Original geschrieben von JoelH
                            leider bekomme ich kein eines von deinen zum laufen, ...
                            Also ... hab nochmal geschraubt & im MyAdmin getestet, und es funzt wie gewünscht. (MySQL 3.23.33)
                            fehlt nur noch die Ausgabe, aber die ist ja kein Problem. *hoff*

                            Code:
                            $result = array();
                            $select = "select *,substring(tag,6,5) as DATUM from jahrgangsstufe";
                            $order = "order by DATUM desc";
                            $q = mysql_query ("$select where substring(tag,6,5)<='".date('m-d')."' $order");
                            # wenn in diesem Jahr noch niemand Geburtstag hatte,
                            if (!mysql_num_rows($q))
                            # wird das letzte Datum aus dem Vorjahr benötigt
                              $q = mysql_query ("$select $order");
                            for ($i=0; $x=mysql_fetch_array($q); $i++)
                            {
                              # das Datum der ersten Zeile merken
                              if (!$i) $datum = $x[DATUM];
                              # und mit dem Datum der aktuellen Zeile vergleichen
                              elseif (strcmp($datum,$x[DATUM]))
                              # ändert sich das Datum, wird die Schleife abgebrochen
                                break;
                              # ansonsten eine Zeile dem Ergebnis hinzugefügt
                              $result[] = $x;
                            }
                            Wenn du noch nach Alter sortieren willst, einfach ",tag" (ältesten zuerst) bzw. ",tag desc" an dem Sortierstring anhängen:
                            $order = "order by DATUM desc,tag";
                            bzw.
                            $order = "order by DATUM desc,tag desc";

                            mein Sport: mein Frühstück: meine Arbeit:

                            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                            Comment


                            • #89
                              @JoelH Coole Sache! Funktioniert einwandfrei...
                              Aber: Was muss ich tun, damit der ausgegeben wird, der als nächstes Geburtstag hat?


                              Danke... wir sind ein riesiges Stück weiter.

                              Lars

                              [Editiert von Larsidotnet am 02-12-2001 um 12:35]

                              Comment


                              • #90
                                Hallo? Wie issn das nun?

                                Wie mache ich mit dem Script, das er mir ausgibt, wer als nächstes Geburtstag hat? Geht es wenn er einen Namen ausgibt, das er dahinter noch das Geburtsdatum ausgibt?

                                Larsi

                                Comment

                                Working...
                                X