roemerquelle: mySQL - letzten Datensatz finden und verwenden ?

Hallo Freunde!

Wie finde ich in einer mysql Datenbank mittels PHP den zuletzt eingegebenen Datenatz und wie spreche ich ihn dann an?

Ich möchte nämlich ausgehend vom letzten Datensatz immer 10 Anzeigen lassen.
Habs bis jetzt immer mit ID gemacht, aber wenn man was löscht funzt das ja nicht mehr wirklich.

Ich danke euch schon vielmals für eure Hilfe.

  1. Hi!

    Probier mal folgendes:

    $a = 0;

    $sql = "SELECT * FROM friends ORDER BY id DESC";
    $row = mysql_query($sql, $conn);
    if ($row) {
    $number = mysql_num_rows($row);
    } else {}

    while ($number = mysql_fetch_array($row, MYSQL_NUM)) {

    $satz[$a] = $row[0];
    $a++;
    }

    Du liest alle DAtensätze sortiert nach id rückwärts ein. So steht der letzte Datensatz an erster Stelle.

    Dann packst Du jede Zeile in ein Array, das ergibt dann immer $row[0].

    Um jede Zeile einzeln ansprechen zu können, erstelle ich hier die Variable $a mit dem Wert 0.

    Jedesmal wenn das while durchläuft, wird $row[0] dem satz[$a] übergeben, und gleich danach wird $a um 1 erhöht.

    Beim ersten Mal wird eben auf satz[0] übergeben, dann auf satz[1] usw...

    Nun kannst Du den letzten Datensatz mit mit satz[0] ansprechen.

    Hoffe, das hilft Dir weiter.

    Gruß, Jan aka Alltimefriend

    1. Hallo,

      $sql = "SELECT * FROM friends ORDER BY id DESC";

      Um die letzten 10 zu bekommen sollte dann doch auch noch ein LIMIT gesetzt werden, oder?
      $sql = "SELECT * FROM friends ORDER BY id DESC LIMIT 0,10";

      Grüße aus Würzburg
      Julian

  2. Hi,

    Wie finde ich in einer mysql Datenbank mittels PHP den zuletzt eingegebenen Datenatz und wie spreche ich ihn dann an?

    den findest du mittels "mysql_insert_id()". Diese PHP-Funktion liefert dir die id des Datensatzes, der zuletzt eingefügt wurde.

    Du kannst allerdings auch ein query an MySQL schicken, das direkt nach der höchsten id abfragt. Guck mal unter "MAX" ins Manual. Da MySQL die ids bei auto - increment fortlaufend vergibt, kriegst du dann auch den letzten Datensatz, der ja automatisch die höchste id bekommt.

    Ich möchte nämlich ausgehend vom letzten Datensatz immer 10 Anzeigen lassen.
    Habs bis jetzt immer mit ID gemacht, aber wenn man was löscht funzt das ja nicht mehr wirklich.

    Genau. Aber das ist ja auch eine ganz andere Geschichte. MySQL vergibt die ids, wie gesagt, fortlaufend. Das heißt, wenn du einen Datensatz einfügst, guckt MySQL nicht nach, welche ids kleiner sind und zu vergeben, sondern hängt immer hinten nur was dran. Dann funzt das, wie der Kollege schon sagte über "LIMIT x,y".

    Praktisch sieht das so aus:
    Du hast dir 10 Datensätze anzeigen lassen und willst 10 weitere sehen. Dann schreibe dieses hier:
    "SELECT * from tabelle LIMIT 10,10" (Wobei ich jetzt aus dem Stand nicht weiß, ob MySQL auch bei 0 anfängt zu zählen oder bei 1).

    Grüße
    Ralf

    1. Moin!
      MySQL fängt bei 0 an.
      Grüße
        Andreas