Daten berechnen (Timestamp) - komplex

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

  • Daten berechnen (Timestamp) - komplex

    Hallo Leute,

    ich habe ein Problem (lach sonst würd ich mich ja hier nicht melden).
    Und zwar habe ich in einer Datenbank einen Timestamp gespeichert.

    MySql Spaltenname "timestamp" - Inhalt: 1187912955

    außerdem habe ich eine Spalte "wdh", dort werden die Monate angezeigt, an dem dieser Beitrag wiederholt werden soll (z.B. 1 (für 1 Monat)).

    dann habe ich eine Spalte "wdh_set", dort wird gespeichert, ob der beitrag schon wiederholt wurde (z.B. 1= wiederholt, leer = muss noch wiederholt werden).

    Es soll nun aus jedem eintrag geguckt werden, welcher Beitrag als erstes wiederholt werden muss und ausgegeben werden, in wievielen Tagen man einen neuen schreiben soll. Wenn der Beitrag, z.B. am 11.08.2007 geschrieben wurde und wdh 1 Monat beträgt, soll am 11.09.2007 dieses Datum orange markiert werden. Wenn der Tag bereits vergangen ist, soll ausgegeben werden, wieviele tage überfällig ist, einen neuen zu schreiben und es soll rot markiert werden.

    Es wäre sehr nett, wenn mir jemand ein Grundgerüst schreiben könnte. Ich wünsche euch noch einen schönen Tag und schonmal danke für eure Bemühungen. Es brauch wirklich nur ein Grundgerüst sein, so das ich als laie weiß, wo ich was hinpacken muss und die Funktionen. Ihr sollt ja nicht alles für mich machen, möchte dabei ja auch lernen.

    Eure Janina

  • #2
    PHP-Code:
    $today time();
    $res mysql_query('SELECT `timestamp`FROM table') or die(mysql_error());
    while (
    $row mysql_fetch_object($res)) {
        if (
    $row->timestamp $today) {
            echo 
    'seit '. (($today $row->timestamp) / 86400);
        } else {
            echo 
    'in '. (($row->timestamp $today) / 86400);
        }
        echo  
    ' Tagen fällig<br />';

    Kommentar


    • #3
      da kommt seit 13749.6817708 Tagen fällig.
      Muss das noch umgerechnet werden?

      Kommentar


      • #4
        PHP-Code:
        $res mysql_query('SELECT UNIX_TIMESTAMP(`timestamp`) AS `timestamp` FROM table') or die(mysql_error()); 

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          seit 13749.6863657 Tagen fällig

          wie muss man denn das nun umrechnen das da tage rauskommen?

          Gruß Janina

          Kommentar


          • #6
            wie muss man denn das nun umrechnen das da tage rauskommen?
            Wenn du den Code von onemorenerd gelesen hättest wüstest du das das bereits Tage sind - nur runden (round()) musst du noch selber.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              Original geschrieben von tontechniker
              Wenn du den Code von onemorenerd gelesen hättest wüstest du das das bereits Tage sind - nur runden (round()) musst du noch selber.
              Wenn du meinen Post gelesen hättest, würdest du sehen, dass in onemorenerds Post noch ein Fehler drin ist / war, bzw. zumindest sein kann, wenn man nicht timestamp als Spaltentyp, sondern DATETIME nutzt~

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Wenn du meinen Post gelesen hättest, würdest du sehen, dass in onemorenerds Post noch ein Fehler drin ist / war, bzw. zumindest sein kann, wenn man nicht timestamp als Spaltentyp, sondern DATETIME nutzt~
                Der TE hat folgendes gepostet: Inhalt: 1187912955 Das sah eindeutig nach timestamp aus ...
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #9
                  Original geschrieben von tontechniker
                  Der TE hat folgendes gepostet: Inhalt: 1187912955 Das sah eindeutig nach timestamp aus ...
                  Nur, dass die Rechnung nicht aufgeht und der TO das Datum als falsch erachtet :?

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Nur, dass die Rechnung nicht aufgeht und der TO das Datum als falsch erachtet :?
                    Was der TO anmerkt ist das 1187912955 geteilt durch 86400 ~13000 ergibt, die Differenz ist da noch nicht drin (ergo hat er nicht das übernommen was onemorenerd geschrieben hat).
                    Zuletzt geändert von tontechniker; 24.08.2007, 23:38.
                    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                    Kommentar


                    • #11
                      PHP-Code:

                      $res 
                      mysql_query('SELECT `timestamp` FROM billings') or die(mysql_error());
                      while (
                      $row mysql_fetch_object($res)) {
                          if (
                      $row->timestamp $today) {
                      $timestamp $row->timestamp 2592000;
                      $d=$today  $timestamp;
                      $datumx $d/86400;
                      $datum round ($datumx);
                              echo 
                      "in $datum";
                          } else {
                      $timestamp $row->timestamp 2592000;
                      $d=$today  $timestamp;
                      $datumx $d/86400;
                      $datum round ($datumx);
                              echo 
                      "seit $datum";
                          }
                          echo  
                      ' Tagen fällig<br />';

                      So jetzt hab ich es... aber es wird immer ein - vor den tagen angezeigt. ich habe jetzt $timestamp = $row->timestamp + 2592000; gemacht also 30 Tage... aber nicht jeder Monat hat 30 Tage. Wie mache ich das, dass z.B. beim 01.07.2007 am 01.08.2007 eine 0 Tage steht?
                      Zuletzt geändert von Pürrierstaab; 25.08.2007, 02:02.

                      Kommentar


                      • #12
                        Also in timestamp steht die Anzahl der Sekunden seid 1970 - warum willst du da noch 30 Tage hinzufügen? Wenn du mit den Daten rechnen willst solltest du lieber auf den Feldtyp DATETIME ausweichen.
                        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                        Kommentar


                        • #13
                          HUHU
                          es geht mir ja bei den 30 Tagen nur darum das die zeit, die zu einem Monat, bzw. 2 Monaten, 3 Monaten (Variabel..."wdh" in der Datenbank nach den Monaten aufgeteilt wird.

                          Sprich wenn in wdh 3 steht, sollen 3 Monate vergehen (z.B. Januar, Februar und März)
                          am 1.01.2008 wird ein Beitrag erstellt, dann soll nach 3 Monaten 01.03.2008 bei "in xx tagen" stehen "in 0 Tagen fällig".

                          Kommentar


                          • #14
                            PHP-Code:
                            $q "
                            SELECT 
                                `timestamp`, 
                                `wdh`, 
                                `wdh_set`,
                                DATE_DIFF(
                                    DATE_ADD(FROM_UNIXTIME(`timestamp`), INTERVAL `wdh` MONTH),
                                    FROM_UNIXTIME(`timestamp`)
                                ) AS daysleft 
                            FROM billings
                            WHERE `wdh_set` < `wdh`"
                            ;
                            // alternativ: WHERE daysleft > 0, dann kannst du die Spalte wdh_set löschen

                            $res mysql_query($q) or die(mysql_error()."\n".$q);
                            while (
                            $row mysql_fetch_object($res)) {
                                echo 
                            'in '$row->daysleft .' Tagen fällig<br />';

                            Das ist ungetestet, aus dem Stegreif geschrieben. Erwarte nicht, dass es funktioniert.

                            http://dev.mysql.com/doc/refman/5.0/...functions.html

                            Kommentar


                            • #15
                              das geht garnicht.

                              PHP-Code:
                              FUNCTION usr_web12_4.DATE_DIFF does not exist SELECT `timestamp`, `wdh`, `wdh_set`, DATE_DIFFDATE_ADD(FROM_UNIXTIME(`timestamp`), INTERVAL `wdhMONTH), FROM_UNIXTIME(`timestamp`) ) AS daysleft FROM billings WHERE `wdh_set` < `wdh

                              Kommentar

                              Lädt...
                              X