Marco: Letzte 5 Zeilen einer MySQL Datenbank anzeigen !!

Hallo zusammen,

ich habe ein Tabelle die nennt sich Users und ich möchte dort die 5 neusten Einträge anzeigen !!

Wer kann mir zeigen wie ich das mache !!

Freue mich über Eure Antworten !!

Gruss Marco

  1. du kennst doch in der mysql_query kann man mit "LIMIT Anfang, bis" angeben, wieviele DS man sehen möchte. Du müsstest einfach alle zählen count(*) und dann Anfang = alle-5 und bis = 5

    also zB
    $iAnz = mysql_query("SELECT count(*) AS anz FORM TABLE");
    $iAnz = $iAnz['anz']-5;
    mysql_query("SELECT * FROM TABLE LIMIT $iAnz, 5");

    passt das? habs nicht probiert ;-)

    cu

    1. Hallo STefan,

      danke für die promte Antwort. bin leider noch mega anfäger deshalb frag ich mich wie zeig ich das dann an?

      mit jrgend einer while schleife oder?

      gruss Marco

      1. tut mir leid für meine blöde antwort - hab mich von der fragestellung reinlegen lassen. natürlich mit einem feld vom typ "timestamp" welches dann einfach mit DESC sortiert wird...
        auslesen mit

        $result = mysql_query("SELECT * FROM TABLE ORDER BY timestamp DESC LIMIT 0,5");
        while ( $record = mysql_fetch_array($result) )
        {
           echo $record['spalte'];
        }

        schau dir einfach innerhalb der while schleife den array $record mit print_r($record); an, dann siehst, welche felder enthalten sind ;-)I

        ciao

  2. Moin!

    ich habe ein Tabelle die nennt sich Users und ich möchte dort die 5 neusten Einträge anzeigen !!

    MySQL-Tabellen sind grundsätzlich als unsortiert zu betrachten. Wenn du irgendwas sortiert haben willst, mußt du das mit "ORDER BY spaltenname (ASC|DESC)" in aufsteigender (ASC) oder absteigender (DESC) Reihenfolge explizit veranlassen. Bedenke: Sortieren kosten unnötig Zeit, deshalb läßt man es bei Aufgaben, die nicht sortiert werden müssen, gerne einfach weg und muß es explizit angeben, wenn man es so haben möchte.

    Dann zum Thema "neueste Einträge": Du benötigst irgendeine Spalte, nach der du sortieren kannst und aufgrund derer die Einträge dann in der Reihenfolge stehen, wie sie hinzugekommen sind. Das kann beispielsweise eine absolut eindeutige ID sein (z.B. in einem auto_increment-Feld), oder auch ein Datum in einem DATETIME-Feld.

    Und dann willst du nur 5 Stück (und nicht die ganze Tabelle) haben - "LIMIT 5".

    Wenn du also nur die ID hast, und jeder neue User eine größere ID kriegt, als alle Einträge vorher, kannst du danach sortieren und die größten 5 IDs (und die weiteren Felder) ausgeben lassen:

    SELECT id, sonstige felder FROM tabelle ORDER BY id DESC LIMIT 5

    Damit wird nach der ID-Spalte sortiert, die größten (und damit die neuesten) IDs zuerst (absteigend = DESC), und es werden nur 5 Datensätze dieser Liste ausgegeben.

    Mit Datum wärs im Prinzip genauso - je größer das Datum, desto später, also liefert die absteigende Sortierung des Datums ebenfalls die neuesten Einträge.

    - Sven Rautenberg

    --
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
    1. Hallo Sven,

      hey bis dahin super erklärung !! Ich habe auch eine solche ID !! jetzt möchte ich nur noch wissen wie ich das dann anzeigen kann !!
      Habe die Abfrage durchgeführt und jetzt?

      Gruss Marco

      1. Moin!

        hey bis dahin super erklärung !! Ich habe auch eine solche ID !! jetzt möchte ich nur noch wissen wie ich das dann anzeigen kann !!
        Habe die Abfrage durchgeführt und jetzt?

        Und jetzt gibst du das abgefragte Datenmaterial aus - so wie immer. Wie das rauskommen soll, kann ich doch nicht wissen, aber grundsätzlich wird gerne eine while-Schleife und mysql_fetch_array() verwendet:

        http://www.php.net/mysql-fetch-array

        Ich hab wenig Lust, grundlegende Datenbankabfragedinge, die im Manual stehen, hier nochmal explizit durchzukauen. RTFM. Verständnisfragen dazu sind ja ok, aber bitte erst lesen und ausprobieren.

        - Sven Rautenberg

        --
        ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|