Peter: Newsboard durchnummerieren

Hi,

habe ein Newsboard programmiert bei dem Einträge im Nachhinein durch einen Admin gelöscht werden können. Die Einträge sollen durchnummeriert werden. Speichere ich die Eintragsnr. in der DB, dann gibt es bei löschen von Einträgen Sprünge (sprich: 14 auf 11, wenn 12 und 13 gelöscht werden).

Einfach durchnummerieren in PHP ist auch nix, da die Einträge später über mehrere Seiten verteilt werden und dann für jede Seite neu von 1 an nummeriert werden würde.

Jetzt könnte man ja noch überlegen, nach jedem löschen alle Einträge aus der DB zu lesen und die Eintragsnummern upzudaten, nur wäre das wohl ziemlich aufwändig bzw. würde lange dauern, wenn sich dieses Newsboard mal richtig gefüllt hat und aus mehreren tausend Einträgen besteht.

DB ist übrigens eine MySQL...

Hat jemand eine Idee wie man das gut lösen könnte?

Grüße vom Peter

  1. Hi,

    habe ein Newsboard programmiert bei dem Einträge im Nachhinein durch einen Admin gelöscht werden können. Die Einträge sollen durchnummeriert werden. Speichere ich die Eintragsnr. in der DB, dann gibt es bei löschen von Einträgen Sprünge (sprich: 14 auf 11, wenn 12 und 13 gelöscht werden).

    Einfach durchnummerieren in PHP ist auch nix, da die Einträge später über mehrere Seiten verteilt werden und dann für jede Seite neu von 1 an nummeriert werden würde.

    Jetzt könnte man ja noch überlegen, nach jedem löschen alle Einträge aus der DB zu lesen und die Eintragsnummern upzudaten, nur wäre das wohl ziemlich aufwändig bzw. würde lange dauern, wenn sich dieses Newsboard mal richtig gefüllt hat und aus mehreren tausend Einträgen besteht.

    Daten in einer SQL-DB sind nicht hierarchisch strukturiert. Eine Auto-ID z. B. gibt keine Reihenfolge vor, sondern ist nur unterscheidendes Merkmal. Stell Dir z. B. vor, eine ID sei ein Fremdschlüssel in einer anderen Relation. Wenn Du die die IDs manuell änderst, stimmen die Verknüpfungen nicht mehr. Mir ist kein Mechanismus bekannt, der solche Veränderungen an den Fremdschlüsseln aktualisieren könnte. Normalerweise ist auch für Anwendungen unerheblich, ob das Feld dünn besetzt ist. Wenn Dir das trotzdem wichtig ist, könntest Du ein zusätzliches Attribut mit der Reihenfolge einsetzen. Dort kannst Du manuell Lücken ausschließen.

    1. Hi,

      ähm, ja, das ist schon klar. Ich hab ein Extra-Feld in dem die Nr. gespeichert wird...kein Primär- oder Fremdschlüssel. Nur, wie bekomme ich es da hin, dass ich Sprünge vermeide?

      Grüße Peter

    2. Hi,

      habe ein Newsboard programmiert bei dem Einträge im Nachhinein durch einen Admin gelöscht werden können. Die Einträge sollen durchnummeriert werden. Speichere ich die Eintragsnr. in der DB, dann gibt es bei löschen von Einträgen Sprünge (sprich: 14 auf 11, wenn 12 und 13 gelöscht werden).

      Einfach durchnummerieren in PHP ist auch nix, da die Einträge später über mehrere Seiten verteilt werden und dann für jede Seite neu von 1 an nummeriert werden würde.

      Jetzt könnte man ja noch überlegen, nach jedem löschen alle Einträge aus der DB zu lesen und die Eintragsnummern upzudaten, nur wäre das wohl ziemlich aufwändig bzw. würde lange dauern, wenn sich dieses Newsboard mal richtig gefüllt hat und aus mehreren tausend Einträgen besteht.

      Daten in einer SQL-DB sind nicht hierarchisch strukturiert. Eine Auto-ID z. B. gibt keine Reihenfolge vor, sondern ist nur unterscheidendes Merkmal. Stell Dir z. B. vor, eine ID sei ein Fremdschlüssel in einer anderen Relation. Wenn Du die die IDs manuell änderst, stimmen die Verknüpfungen nicht mehr. Mir ist kein Mechanismus bekannt, der solche Veränderungen an den Fremdschlüsseln aktualisieren könnte. Normalerweise ist auch für Anwendungen unerheblich, ob das Feld dünn besetzt ist. Wenn Dir das trotzdem wichtig ist, könntest Du ein zusätzliches Attribut mit der Reihenfolge einsetzen. Dort kannst Du manuell Lücken ausschließen.

      Geht es zwingend um eine Numerierung in der DB, oder reicht auch eine Angabe in einer Ausgabesortierung? Dann numeriere doch bei der Ausgabe via PHP und merke Dir entsprechend als Offset die Seite multipliziert mit der Anzahl Ausgabesätze pro Seite. 1-10, 11-20, usw. - wenn Du sowas meinst wie die Ausgabe des Suchergebnisses bei Google etwa, nur eben durchnumeriert.

      Nick

      --
      --------------------------------------------------
      http://www.xilp.eu
      XILP Internet Links People
      Dein persoenliches privates Netzwerk
      aus Freunden, Verwandten, Bekannten und Kollegen.
      --------------------------------------------------
      Hamburg Berlin München
      1. Hi Nick,

        klar, wie dumm von mir...naja, manchmal sieht man die einfachen Dinge nicht. Danke!

        Grüße Peter