Ich habe eine MySQL-Tabelle mit "Position" Zeile. Grundsätzlich eine Reihe von Datensätzen mit eigenen ID-, Beschreibungs- und Titel- (und Positions-) Zeilen.MySQL, PHP: Wie "slide down" Datensätze nach bestimmten Zeile?
Position ist für jeden Datensatz eindeutig und keine zwei Datensätze können dieselbe Position haben. Wenn Sie neue Datensätze erstellen, wird die Position erstellt, indem Sie den maximalen Positionswert auswählen und 1 hinzufügen.
Das Problem ist, wenn Sie löschen einen Datensatz eine Position "Lücke" Formen in der Tabelle. Lassen Sie uns sagen, Datensätze hatten 1, 2, 3, 4, 5 Positionswerte, Sie löschen die 4. und es wird 1, 2, 3, 5.
Ich möchte diese Zeile "gleiten", so dass es 1 wird, 2, 3, 4. Wenn der zweite Datensatz gelöscht wurde, sollte er 1, 2, 3 (statt 1, 3, 4) werden.
Auch wenn es viel komplizierter Positionsstapel wie 1, 3, 2, 4, 5, 6, _, 8 ist, wo _ gelöscht wird, dann sollte es die ungeordneten 1, 3, 2, 4 Teile und werden 1, 3, 2, 4, 5, 6, 7.
1. Verwenden Sie einen Primärschlüssel 2. Ohne Primärschlüssel haben Sie Nebenläufigkeitsprobleme 3. Warum möchten Sie fortlaufende Nummern? – Mihai
@Mihai Ich habe bereits ID als Primärschlüssel. –
@Mihai Es gibt eine Reihe von Elementen (Datensätze), die auf der Website über PHP angezeigt wird ('SELECT * FROM 'Produkte' WHERE ('Position'> =". $ Start. ") UND ('Position' <". $ offset. ") ORDER BY 'Position' ASC"; '). Sie können eine Position eines bestimmten Elements festlegen, aber nur, wenn eine neue Position belegt ist (ein Austausch mit einem anderen Element). –