Werte nach bestimmter Zeit auf Null setzen?

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

  • Werte nach bestimmter Zeit auf Null setzen?

    Hallo zusammen,

    ich schreibe gerade an einer Topliste. Für die eingetragenen Seiten werden die eingehenden (in) und ausgehenden (out) klicks gezählt und in einer sql-DB gespeichert.
    Jetzt möchte ich, dass gleichzeitig die in/out-Werte aller Seiten nach einer bestimmten Zeit (z.B. 2 Wochen) automatisch auf 0 gesetzt werden.

    Bin für jeden Tipp dankbar!

    cu
    langerxxx

  • #2
    also
    1. Zeitframe festlegen (z.b. 14Tage)
    2. Falls ein besucher auf die Topliste kommt und Zetframe abgelaufen ist, wird die Liste auf Null gesetzt.
    3. fertisch

    cu
    berni

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      mmh...

      Danke schonmal,

      aber lass dich von der Zahl meiner Beiträge nicht täuschen. Bin immer noch Newbie in Sachen PHP. :-)
      Kannst du mir mal ein paar Code-Teile posten, damit ich hier weiterkomme?!

      Danke im voraus!

      cu
      langerxxx

      Kommentar


      • #4
        -du must dir nur ein Startdatum (TimStamp) in einer Datei oder in einer Tabelle "merken"

        -Bei jedem Aufruf deiner Topliste muss überprüft werden ob eine bestimmte Anzahl (nDays) von Tagen vergangen ist.

        ist das der Fallm werden alle Einträge aus der Db gelöscht und dein Startdatum wird auf das aktuelle Datum gesetz.

        Spiel geht von vorne los...


        Fang einfach mal an und stelle dann deine Fragen gezielter.

        cu
        berni

        php-Entwicklung | ebiz-consult.de
        PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
        die PHP Marktplatz-Software | ebiz-trader.de

        Kommentar


        • #5
          Frage zum Code...

          Hallo,

          ich habe jetzt mal einen Anfang zu dem oben gestellten Problem geschrieben. Mir ist allerdings noch nicht ganz klar, wie zu dem Datum aus der Tabelle reset 14 Tage hinzuzählen kann?!
          Kann mir da jemand mal den fehlenden Teil posten und hat jemand noch Verbesserungsvorschläge? :-)

          Hier der Code:

          $reset_interval = 14;

          $result = mysql_query("SELECT datum FROM reset");
          $date_last_reset = mysql_fetch_array($result);

          $date_today = date("Y-m-d");
          $date_reset = ($date_today 'hier irgendwie + $reset_interval, oder?');


          if($date_last_reset = $date_reset) {
          mysql_query("UPDATE reset SET click_out = 0, click_in = 0 WHERE click_in >= 1");
          mysql_query("UPDATE reset SET datum = current_date");
          }

          Danke im voraus.

          cu
          langerxxx

          Kommentar


          • #6
            schau dir mal den kleinanzeigen markt unter http://www.traut24.com an da gibts so ne ähnliche funktion!!

            SOFARJOAT
            the end comes faster than you think - you've already reached it!

            Kommentar


            • #7
              mmh...

              Danke für den Tipp, aber aus der Funktion werde ich nicht so ganz schlau...

              Bin für jeden Tipp dankbar!

              cu
              langerxxx

              Kommentar


              • #8
                nun, ich würde es so machen:


                $reset_interval = 14*24*60*60; //Anzahl*tage*min*sec

                $result = mysql_query("SELECT datum FROM reset");
                $date_last_reset = mysql_fetch_array($result);

                $date_today = time(); // aktueller timestamp

                if(($date_last_rest+$reset_interval) > $date_today ) {
                mysql_query("UPDATE reset SET click_out = 0, click_in = 0 WHERE click_in >= 1");
                mysql_query("UPDATE reset SET datum = '$date_today'");
                }

                ist mit timestamp einfacher als mit date(), imho
                Gruß erbse
                ErbseNet.de

                Kommentar


                • #9
                  Fehlermeldung

                  Hallo erbse,

                  schon mal danke für den Tipp. Sieht schon prima aus. Allerdings bekomme ich folgende Fehlermeldung und ich weiß nicht woher...

                  Fehlermeldung: Fatal error: Unsupported operand types in /mnt/ls5/01/806/00000001/htdocs/toplist/index.php on line 30

                  Und hier nochmal der Code, das Datum ist im Format 2002-03-22 gespeichert:

                  $reset_interval = 14*24*60*60; //Anzahl*tage*min*sec

                  $result = mysql_query("SELECT datum FROM reset");
                  $date_last_reset = mysql_fetch_array($result);


                  $date_today = time(); // aktueller timestamp


                  if(($date_last_reset+$reset_interval) > $date_today ) {
                  mysql_query("UPDATE sites SET click_out = 0, click_in = 0 WHERE click_in >= 1");
                  mysql_query("UPDATE reset SET datum = '$date_today'");
                  }

                  Kommentar


                  • #10
                    jetzt hab ich mal ne Frage :

                    Setzt
                    PHP-Code:
                    time(); 
                    die das komplette Datum in einen Zeit-
                    stempel um oder nur die Uhrzeit ?????

                    mfg daphreak
                    If something's HARD to do,

                    then it's not worth doing.
                    (Homer J. (Jay) Simpson)

                    Kommentar


                    • #11
                      ...

                      So weit ich weiß, liefert Time den kompletten Zeitstempel:

                      lauf Def. time -- Return current UNIX timestamp

                      Oder liege ich da falsch??

                      cu
                      langerxxx

                      Kommentar


                      • #12
                        Weiß noch jemand Rat??

                        Hallo zusammen,

                        habe nochmal ein wenig weiter geschrieben. Allerdings scheint es bei der Berechnung des reset-Datums einen Fehler zu geben. Das Feld 'datum' wird wie gesagt im Format 2002-03-22 gespeichert.

                        Bin für jeden Tipp dankbar!

                        Hier der Code:

                        $reset_interval = 14*24*60*60; //Anzahl*tage*min*sec

                        $result = mysql_query("SELECT datum FROM reset");

                        $date_last_reset = mysql_fetch_array($result);

                        echo "$date_last_reset[datum]";

                        $date_last_reset = $date_last_reset[datum] + $reset_interval;

                        echo "$date_last_reset";

                        $date_today = time(); // aktueller timestamp

                        if($date_last_reset > $date_today ) {
                        mysql_query("UPDATE sites SET click_out = 0, click_in = 0 WHERE click_in >= 1");
                        mysql_query("UPDATE reset SET datum = '$date_today'");
                        }

                        cu
                        langerxxx

                        Kommentar


                        • #13
                          Eine Anrgegung, vergiß die Berechnung, machs einfacher

                          $result = mysql_query("SELECT datum, DATE_ADD(datum, INTERVAL 14 DAY) AS heuteund14, now() as jetzt FROM reset");

                          // in heuteund14 steht das Datum mit den hinzugezählten 14 Tagen
                          // in jetzt steht der Heutige Tag (mit Uhrzeit)
                          ...

                          if($date_last_reset > $date_today ) {
                          mysql_query("UPDATE sites SET click_out = 0, click_in = 0 WHERE click_in >= 1");
                          mysql_query("UPDATE reset SET datum = DATE_ADD(datum, INTERVAL 14 DAY)");
                          }

                          -------------

                          DATE_ADD(date,INTERVAL expr type)
                          DATE_SUB(date,INTERVAL expr type)
                          ADDDATE(date,INTERVAL expr type)
                          SUBDATE(date,INTERVAL expr type)

                          Diese Funktionen können Datumsberechnungen durchführen.
                          (Ab MySQL Version 3.22.)
                          ADDDATE() und SUBDATE() sind Synonyme für DATE_ADD() und DATE_SUB().

                          In der Version MySQL 3.23, kannst Du auch + und - anstatt DATE_ADD() oder DATE_SUB() verwenden,
                          soferne der Ausdruck auf der rechten Seite einem DATETIME oder DATE Format entspricht.

                          "date" i.a. Beschreibung ist das Startdatum.
                          "expr" spezifiziert das Interval, welches addiert oder subtrahiert werden soll.
                          "type" beschreibbt wie das Interval interpretiert werden soll.

                          SECOND Sekunden
                          MINUTE Minuten
                          HOUR Stunden
                          DAY Tage
                          MONTH Monate
                          YEAR Jahre
                          MINUTE_SECOND Minuten:Sekunden
                          HOUR_MINUTE Stunden:Minuten
                          DAY_HOUR "Tage Stunden"
                          YEAR_MONTH "Jahre-Monate"
                          HOUR_SECOND "Stunden:Minuten:Sekunden"
                          DAY_MINUTE "Tage Stunden:Minuten"
                          DAY_SECOND "Tage Stunden:Minuten:Sekunden"

                          mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
                          -> 1998-01-01 00:00:00
                          mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
                          -> 1998-01-01
                          mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
                          -> 1997-12-31 23:59:59
                          mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
                          INTERVAL 1 SECOND);
                          -> 1998-01-01 00:00:00
                          mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
                          INTERVAL 1 DAY);
                          -> 1998-01-01 23:59:59
                          mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
                          INTERVAL "1:1" MINUTE_SECOND);
                          -> 1998-01-01 00:01:00
                          mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
                          INTERVAL "1 1:1:1" DAY_SECOND);
                          -> 1997-12-30 22:58:59
                          mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
                          INTERVAL "-1 10" DAY_HOUR);
                          -> 1997-12-30 14:00:00
                          mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
                          -> 1997-12-02
                          mysql> select date_add("1999-01-01", interval 1 day);
                          -> 1999-01-02
                          mysql> select date_add("1999-01-01", interval 1 hour);
                          -> 1999-01-01 01:00:00

                          Wenn ein ungültiges Datum verwendet wird, ist das Ergebnis NULL.

                          Kommentar


                          • #14
                            ...

                            Hallo Hand,

                            danke für die ausführliche Antwort. Ist wirklich einfacher so. Aber irgendwie läuft der Code nicht, hast du eine Ahnung, was da noch falsch ist? (Bei der Ausgabe der Variablen $date_today und $date_reset erfolgt keine Ausgabe??)

                            $result = mysql_query("SELECT datum, DATE_ADD(datum, INTERVAL 14 DAY) AS date_reset, now() as date_today FROM reset");

                            // in date_reset steht das Datum mit den hinzugezählten 14 Tagen
                            // in date_today steht der Heutige Tag (mit Uhrzeit)

                            echo "$date_reset";
                            echo "$date_today";


                            if($date_reset > $date_today ) {
                            mysql_query("UPDATE sites SET click_out = 0, click_in = 0 WHERE click_in >= 1");
                            mysql_query("UPDATE reset SET datum = DATE_ADD(datum, INTERVAL 14 DAY)");
                            }

                            Thanks in advance!

                            cu
                            langerxxx

                            Kommentar


                            • #15
                              PHP-Code:
                              $result mysql_query("
                                  SELECT
                                      datum,
                                      DATE_ADD(datum, INTERVAL 14 DAY) AS date_reset,
                                      CURDATE() as date_today
                                  FROM
                                      reset"
                              ); 

                              while(
                              $row mysql_fetch_array($result)) {
                                  
                              $date_reset $row[date_reset];
                                  
                              $date_today $row[date_today];
                              }

                              echo 
                              "date_reset:$date_reset<br>"
                              echo 
                              "date_today:$date_today<br>"

                              if(
                              $date_reset $date_today ) { 
                                  
                              mysql_query("UPDATE sites SET click_out = 0, click_in = 0 WHERE click_in > 0"); 
                                  
                              mysql_query("UPDATE reset SET datum = $date_reset"); 

                              Kommentar

                              Lädt...
                              X