Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage der Einträge von "Heute" (phpbb)

Einklappen

Neue Werbung 2019

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

  • Abfrage der Einträge von "Heute" (phpbb)

    moin

    ich will die anzahl der "heute" (aktuelles Datum) geschriebenen Einträge auslesen und hatte mir als erste anfrage folgendes gebaut:

    SELECT post_id, CURRENT_DATE as today, topic_id, forum_id, poster_id, FROM_UNIXTIME( ( post_time ), '%Y-%m-%d' ) AS datum
    FROM `phpbb_posts`
    where 'datum'='today'
    ORDER BY post_id DESC;
    der syntax ist richtig und auch das format der beiden datumseinträge stimmt (testabruf) überein, allerdings bekomme ich als ergebnis nichts (leere tabelle) zurück. woran kann das liegen?

    wie bekomme ich nun das count() in die abfrage?

    mfg alex

  • #2
    gibt er damit was aus:

    mysql error
    man sollte in seinen Scripten immer mysql_error() verwenden, in etwa so:
    PHP-Code:
    $sql = "SELECT feld1,feld2 FROM table WHERE id=5";
    $result = mysql_query($sql) or die(mysql_error().'
    Query: '
    .$sql); 

    Kommentar


    • #3
      also ausgeben tut er alles sonst normal. ist ja auch das phpbb forum. ich teste momentan nur unter phpmyadmin, um überhaupt erstmal ein paar ergebnisse zu bekommen, aber mit dieser anfrage gibt er nichts zurück.

      die einzige fehlerquelle die ich mir vorstellen kann: datum und today matchen nicht. ich habe die umwandlung zu current_date ja über die ausgabe gelöst (%Y-%m-%d), allerdings weiß ich nicht, ob das so überhaupt erlaubt ist.

      Kommentar


      • #4
        Teste dieses:
        Code:
        SELECT
           COUNT(post_id) AS anzahl,
           CURDATE() AS today
        FROM
           phpbb_posts
        WHERE
           FROM_UNIXTIME(post_time, '%Y-%m-%d') = CURDATE()
        GROUP BY
           FROM_UNIXTIME(post_time, '%Y-%m-%d')
        und dieses:
        Code:
        SELECT
           post_id, CURRENT_DATE() as today, topic_id, forum_id, poster_id, FROM_UNIXTIME(post_time, '%Y-%m-%d' ) AS datum
        FROM
           `phpbb_posts`
        where
           FROM_UNIXTIME(post_time, '%Y-%m-%d') = CURRENT_DATE()
        ORDER BY
           post_id DESC;
        
        /*
        Damit erhälst du alle Datensätze, die das Datum von heute haben.
        Die Anzahl musst du dir dann mittels MYSQL_NUM_ROWS($resultID) abfragen.
        */
        mfG ~dilemma~

        Kommentar


        • #5
          danke - funktionieren beide!

          aber warum darf man in der ersten abfrage das attribut post_time in der where-clause verwenden, ohne dass man es in der select abgefragt hat?

          Kommentar


          • #6
            das ist generell egal was du hinter where oder select schreibst ist frei wählbar!!!

            Kommentar


            • #7
              @ elconde:
              Du kannst im WHERE-Teil alle Spalten aufführen, die es in der Tabelle gibt,
              OHNE daß diese im SELECT-Teil benannt sein müssen.

              Wenn du aber im SELECT-Teil eine Spalte umbenennst,
              (zB: SELECT FROM_UNIXTIME(post_time, '%Y-%m-%d' ) AS datum from tabelle)

              kannst du diesen 'Spalten-Alias' ---> datum <---
              NICHT als Spalten-Bezeichnung im WHERE-Teil verwenden,
              weil MYSQL diese Spalte (im WHERE-Teil der Abfrage) nicht kennt!

              Wohl aber im ORDER BY oder HAVING -Teil der Abfrage...
              Also zB:
              ORDER BY datum
              HAVING datum = '2005-04-14'

              mfG ~dilemma~

              Kommentar


              • #8
                alles klar - schönen dank!

                hier ist übrigens das ergebnis:
                http://www.vsfs.de

                Kommentar


                • #9
                  Wenn du das Datum als DATE oder DATETIME speichern würdest, ginge es auch einfacher, und du könntest über die DB auch entsprechende Berechnungen durchführen.

                  Kommentar

                  Lädt...
                  X