id neu setzen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Anardil
Mitglied
Beiträge: 48
Registriert: 18.05.2001 02:00
Kontaktdaten:

id neu setzen

Beitrag von Anardil »

Hallo :)

Ich bastel gerade an einem kleinen Script, was ganz simpel Daten speichert und bei Bedarf in einer Liste ausgibt. Jedes einzelne Element bekommt eine ID, welche bei dem Einfüger in die DB mittels auto_increment immer um 1 erhöht wird. Sagen wir, ich habe 5 Elemente und möhte Element 3 löschen, also wird ID 3 gelöscht, bleibt über 1,2,4,5. Jetzt ordne ich die ID's. So dass das eine durchgehende Reihenfolge 1,2,3,4 existiert. Ähnlich verhält es sich beim Einfügen. Ich habe 5 Elemente und möchte zwischen Element 2 und Element 3 ein Neues einfügen. Also nehme ich per (war meine Überlegung und so habe ich es zunächst einmal realisiert) die nachfolgenden Elemente her, erhöhe die ID um jeweils 1 und schaffe so Platz für das neue Element.

Meine eigentliche Frage: Kann ich sowas direkt über eine SQL-Abfrage realisieren oder ist ein kleiner "Umweg" über PHP (Schleife) notwendig, weil es ganz einfach nicht anders funktioniert?

Postet jetzt bitte keinen kompletten Quelltext zur Lösung ;) Bissl will ich ja auch noch basteln.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

http://www.dclp-faq.de/q/q-sql-ids.html
Verwende zum Sortieren besser eine weitere Spalte. Guck dir dazu den Quellcode von phpBB an (Kategorien/Foren Administration).
Benutzeravatar
Anardil
Mitglied
Beiträge: 48
Registriert: 18.05.2001 02:00
Kontaktdaten:

Beitrag von Anardil »

Jupp da war ich heut auch schon :) Aber nehmen wir mal einfach an ich tu es mit einer separaten Spalte, gibt es so eine Möglichkeit oder generell immer über PHP?
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

1,2,3,4

Code: Alles auswählen

UPDATE foo SET bar=bar+1 WERE bar >=3
1,2,4,5

Code: Alles auswählen

INSERT INTO foo(bar) VALUES(3)
1,2,3,4,5
Benutzeravatar
Anardil
Mitglied
Beiträge: 48
Registriert: 18.05.2001 02:00
Kontaktdaten:

Beitrag von Anardil »

Funzt auch nicht, da z.B. 3 erhöht wird auf 4, die dann aber existent ist -> Error
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

So wie du das beschreibst verhält es sich nur, wenn die Spalte einen primary oder unique key hat, was deiner Aussage nach aber angeblich nicht der Fall ist :roll:
Benutzeravatar
Anardil
Mitglied
Beiträge: 48
Registriert: 18.05.2001 02:00
Kontaktdaten:

Beitrag von Anardil »

Stimmt, aber war ja auch Sinn und Zweck der ID's. Dann werd ich 2 Spalten nehmen, einmal als Primary und einmal zum Sortieren. Ich danke dir!
Antworten

Zurück zu „Coding & Technik“