[MySQL] Spalte für Reihenfolge, automatische Aktualisierung

Tim C.

Erfahrenes Mitglied
Folgendes eigentlich sehr einfach beschreibbare Problem drückt mir im Moment ein bischen im Schuh ;)

Angenommen ich habe eine Tabelle in der eine Spalte die Reihenfolge der Einträge charakterisiert, in der sie später dargestellt werden sollen.
Die löse ich natürlich über eine INT-Spalte, die ich evtl. noch auf UNIQUE setze.

Jetzt ist meine Frage, ob es möglich ist, dass wenn ich das Element von Position 5 nach Position 2 schiebe (präziser: die 5 in der Spalte durch eine 2 ersetze), sich die alten Elemente 2-4 automatisch um eins nach unten verschieben (präziser: die Zahlen 2-4 sich um 1 erhöhen)? Oder andere Situation, dass sie sich automatisch nach oben schieben, wenn ich Element 1 nach 6 schiebe.

Kann man das irgendwie mit "Bordmitteln" lösen, oder muss ich mir dazu eine eigene PHP Funktion aus den Fingern saugen ?
 
dafür werden 3 sql Befehle gebraucht, also doch eine Mini PHP Function :)

1. Schritt dein Eintrag von der Position 5 irgendwie sichern auf eine Position
die sonst nie verwendet wird ( 0 oder 99999)

update reihenfolge set sortfeld='9999' where sortfeld = '5'

2. Deine restlichen Einträge verschieben (hier nach unten)

update reihenfolge set sortfeld=(sortfeld+1) where sortfeld >= '$newid' and sortfeld < '5'

3. Den gesicherten Eintag an die richtige Stelle schieben

update reihenfolge set sortfeld='$newid' where sortfeld='9999'
 
Zuletzt bearbeitet:
Kann mir das einer mal näher erklären?

Original geschrieben von melmager
dafür werden 3 sql Befehle gebraucht, also doch eine Mini PHP Function :)

1. Schritt dein Eintrag von der Position 5 irgendwie sichern auf eine Position
die sonst nie verwendet wird ( 0 oder 99999)

update reihenfolge set sortfeld='9999' where sortfeld = '5'

2. Deine restlichen Einträge verschieben (hier nach unten)

update reihenfolge set sortfeld=(sortfeld+1) where sortfeld >= '$newid' and sortfeld < '5'

3. Den gesicherten Eintag an die richtige Stelle schieben

update reihenfolge set sortfeld='$newid' where sortfeld='9999'

Hallo Leute,

bin totaler nicht php oder sql Mensch,

baue aber eine Homepage für mich selbst, dieser Eintrag war intressant für mich da ich aus einer sql Datenbank mir Daten auf meiner HP anzeigen lassen möchte und ein Feld berechnen lassen wollte.

Habe eine sql-Datenbank mit drei Feldern rang, name und punkte. Name und Punkte sollten in die Datenbank eingegeben werden und der rang anhand von Punkte errechnet werden, geht das mit dieser Anweisung und wenn ja könnt Ihr mir sagen wie?

Hoffe meine Frage ist nicht all zu dumm, aber ist es möglich in sql ein Feld berechnen zulassen oder brauch man ein php dazu.

noch einen schönen Tag wünsch ich Euch
 
@aes

Da Du die Punkte auch in der Tabelle gespeichert hat brauchst Du doch nichts berechnen! Sortier die Daten beim Auslesen doch nach dem Punktefeld:

SELECT * FROM tabspieler ORDER BY punkte

Mit einem angehängten DESC oder ASC kannst Du das dann noch aufsteigend oder absteigend sortieren.

Oder gibt es mehrere Eintragungen pro Spieler? In dem Falle solltest Du die Tabelle aufteilen in Spieler und Spiele und diese miteinander verknüpfen.
 

Neue Beiträge

Zurück