Guma: MySql: Selectabfrage: nächsten Datensatz abfragen

Hallo zusammen,
ich stehe gerade vor dem problem, dass ich einen Datensatz aus der MySql-DB geholt habe (z.B. id=22), jetzt will ich am Ende der Webseite einen Link setzen (z.B. nächster Artikel...). Ich könnte einfach id=23 setzen und ihn holen. leider kann der datenssatz gelöscht sein oder gar nicht vorhanden sein. Ich nutze zwar auto-increment umdie id beim anlegen eines Datensatzes um eins zu erhöhen. allerdings kann ich auch datensätze löschen.

Wie kann ich mit einer PHP-SQL-Abfrage rausfinden, wie die id meines nächsten Datensatzes heißt?!

Benötige Hilfe Guma

  1. Hallo zusammen,
    ich stehe gerade vor dem problem, dass ich einen Datensatz aus der MySql-DB geholt habe (z.B. id=22), jetzt will ich am Ende der Webseite einen Link setzen (z.B. nächster Artikel...). Ich könnte einfach id=23 setzen und ihn holen. leider kann der datenssatz gelöscht sein oder gar nicht vorhanden sein. Ich nutze zwar auto-increment umdie id beim anlegen eines Datensatzes um eins zu erhöhen. allerdings kann ich auch datensätze löschen.

    Wie kann ich mit einer PHP-SQL-Abfrage rausfinden, wie die id meines nächsten Datensatzes heißt?!

    Benötige Hilfe Guma

    select max(id) from usw

    dann ne schleife di von deiner id bis zum max wert prüft ob der datensatz exestiert.. und wenn vorher id=max dann ist es der letzte...

    1. danke, ich werde die id um eins erhöhen:
      <?php $nextid = $id+1;
      echo $nextid;

      .. jetzt will ich prüfen ob id=59... 60 ...61 vorhanden ist und ausgeben. kannst du mir zeigen wie ich das prüfe..

      Guma

  2. Du könntest z.B. einfach die Id immer um 1 inkrementieren und dann schauen, ob Du ein leeres ResultSet zurückbekommst oder nicht.

  3. Hi,

    blättern auf Basis der ID? Heikel und zugleich ungeschickt.
    Vorschlag: Übergib stattdessen als Parameter die NUMMER des Datensatzes den du anzeigen willst und kombiere deine SELECT-Abfrage mit einem LIMIT (gesuchter Datensatz, 1)

    MfG
    Rouven

    --
    -------------------
    When the only tool you've got is a hammer, all problems start to look like nails.
  4. echo $begrüßung;

    Wie kann ich mit einer PHP-SQL-Abfrage rausfinden, wie die id meines nächsten Datensatzes heißt?!

    Wie du selbst siehst, ist die ID in deinem wie in den meisten Fällen ein unbrauchbares Sortierkriterium. Ermittle zuerst die Ergebnismenge inklusive Sortierung und wähle davon die gewünschte(n) Position(en) mittels LIMIT.

    echo "$verabschiedung $name";

    1. habe ich richtig verstanden... ich lese also hier 2 datensätze aus und gebe den ersten mit limit aus, den zweiten setze ich als link drunter.

      guma

  5. Hi,

    ich stehe gerade vor dem problem, dass ich einen Datensatz aus der MySql-DB geholt habe (z.B. id=22), jetzt will ich am Ende der Webseite einen Link setzen (z.B. nächster Artikel...). Ich könnte einfach id=23 setzen und ihn holen. leider kann der datenssatz gelöscht sein oder gar nicht vorhanden sein. Ich nutze zwar auto-increment umdie id beim anlegen eines Datensatzes um eins zu erhöhen. allerdings kann ich auch datensätze löschen.

    Wenn's wirklich über die ID gemacht werden soll:

    ... WHERE id > bisherigeID LIMIT 1

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. danke, auch nicht schlecht... und falls nichts größer als die bisherige id ist kann ich ja den "next-button" weglassen.

      guma

    2. Hi,

      Wenn's wirklich über die ID gemacht werden soll:
      ... WHERE id > bisherigeID LIMIT 1

      Daß dabei natürlich nach id sortiert werden muß, hatte ich vergessen zu erwähnen.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  6. yo,

    ergänzend, zu dem was schon gesagt wurde, gibt es ein problem it LIMIT, wenn du dies über eine spalte anwendest, die gleiche werte annehmen können. also einfach nur über das datum sortieren und dann mit LIMIT 1 auswählen reicht in aller regel nicht aus. Aber ich wiedehole mich gerade mit dem Problem von weiter oben....

    Ilja