Zukunftsberechnung

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

  • Zukunftsberechnung

    hoi,

    ich möchte aus meiner Datenbank bestimmte gepeicherte Themen auslesen, die in der Zukunft geplant sind.
    Dafür verantwortlich ist das Feld topic_datum2, das den Timestamp der Zeit enthält, die in die Zukunft gesehen werden soll.

    Code:
    SELECT t.*, p.poster_id, p.post_username AS last_poster_name,
    p.post_id, p.post_time, f.forum_name, f.forum_id, u.username AS last_poster, u.user_id AS last_poster_id,
    u2.username AS first_poster, u2.user_id AS first_poster_id, p2.post_username AS first_poster_name
    FROM phpbb_topics t, phpbb_posts p
    LEFT OUTER JOIN phpbb_posts p2 ON p2.post_id = t.topic_first_post_id LEFT OUTER JOIN phpbb_forums f ON
    p.forum_id = f.forum_id LEFT OUTER JOIN phpbb_users u ON p.poster_id =
    u.user_id LEFT OUTER JOIN phpbb_users u2 ON u2.user_id =
    t.topic_poster WHERE t.forum_id NOT IN ('start') AND t.forum_id IN (2,3)
    AND p.post_id = t.topic_last_post_id AND FROM_UNIXTIME(t.topic_datum2,'%Y%m%d')
    - FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d') = +1
    ORDER BY t.topic_last_post_id DESC LIMIT 0, 10
    es will aber nicht.
    Phpmyadmin zeigt, dass die Query an sich richtig ist, zeigt aber keine ausgelesenen Einträge an, obwohl ein Eintrag für morgen vorgesehen ist.

  • #2
    Re: Zukunftsberechnung

    Original geschrieben von Johny
    Dafür verantwortlich ist das Feld topic_datum2, das den Timestamp der Zeit enthält, die in die Zukunft gesehen werden soll.
    und auf deutsch?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      FROM_UNIXTIME(t.topic_datum2,'%Y%m%d')
      - FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d') = +1

      Das +1 erscheint mir nicht richtig für dein Vorhaben, außerdem brauchst du glaub ich unix_timestamp() nicht auch noch now() zu übergeben.

      FROM_UNIXTIME(t.topic_datum2,'%Y%m%d')
      - FROM_UNIXTIME(unix_timestamp(),'%Y%m%d') = 1

      Damit solltest du eigentlich immer die Einträge für den nächsten Tag bekommen, allerdings nur, wenn's nicht über den Monat hinweg geht, ich glaube du solltest deine Vorgehensweise nochmal überdenken.

      Gruss
      Quetschi
      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
      Schön - etwas Geschichte kann ja nicht schaden.
      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

      Kommentar


      • #4
        hoi,

        ich habs jetzt mal anders versucht:

        PHP-Code:
        //
        // This Datum is shown in posts
        //

        $datum1 = ( !empty($HTTP_POST_VARS['datum']) ) ? trim($HTTP_POST_VARS['datum']) : '';

        //
        // Split Date
        //
        $splitdate explode(" ",$datum1);
        $day $splitdate[0];
        $month $splitdate[1];
        $year $splitdate[2];

        //
        // Make Timestamp for future calculation & DB Entry
        //
        $datum2 mktime(000$month$day$year
        $datum2 wird dann in die Datenbank gespeichert.
        Doch wenn ich $datum2 wieder per date() umforme, zeigt er mir als Datum eins von 1999 an, obwohl ich im Eingabefeld z.B. den 26.07.2005 angegeben habe.

        woran liegt das?

        Kommentar


        • #5
          Wie wärs denn mit der Funktion "to_days()" ?

          So ungefähr:
          PHP-Code:
           "SELECT * FROM bla WHERE TO_DAYS(mein_datum) = TO_DAYS(now())+1" 
          Nur mal so als Idee...


          Kannst natürlich auch DATE_ADD() oder DATE_SUB() nehmen...

          Kommentar

          Lädt...
          X