Hi Oke,
Und das ganze will ich über ein PHP sript erledigen. es können auch Javascript Elemente dabei sein.
Mit Javascript wirst du nicht weit kommen ;-)
Wie würdet ihr an die sache ran gehen? und könnt ihr mir ein paar Lösungsvorschläge machen?
Zufälliger Weise habe ich genau so etwas schon einmal, um genau zu sein erst neulich erneut realisiert. Dabei habe ich mir folgendes ausgedacht:
id | order_id | text
---+----------+-------------
1 | 1 | Hallo
2 | 2 | Guten Tag
3 | 4 | Willkommen
4 | 3 | Ciao ;-)
Zuerst mal habe ich jedem Datensatz über die Spalte ID einen eindeutigen Schlüssel zugewiesen, ahand der ID ist also jeder Datensatz identifizierbar (id, int(6), auto increment, primary key). Die Order-ID ist zu Beginn (beim Einfügen eines neuen Eintrags) erst mal identisch mit der ID, dadurch kommt es auch nicht zu konflikten - nachträglich kann die Order-ID dann geändert werden.
Soviel zur Datenbankstruktur - nun zum PHP Code, der das ändern soll: Wie auffällt gibt es keine ID 0, weil MySQL bei auto_increment stets bei 1 mit dem Zählen anfängt. Deshalb dachte ich mir ich setze ich die order_id auf 0, dann die order_id des nächsten Eintrages auf die order_id des ersten Eintrages und schließlich wieder die des alten Eintrages, die i.M. ja gerade 0 ist auf die alte order_id des nächsten Eintrages.
Mag zwar etwas kompliziert klingen, ließ sich aber recht leicht umsetzen - das mit dem über 0 gehen habe ich gemacht, damit zu keinem Zeitpunkt zwei Datensätze die gleiche order_id besitzen. Mir fällt allerdings gerade nicht mehr ein, warum das so sein musste...
Du kannst dir meinen PHP Code für MySQL Order ID gerne mal anschauen und auch verwenden. Ich weiß allerdings nicht, ob das in der Form so optimal ist, vielleicht gibt es ja auch eine einfachere Methode in MySQL das zu realisieren?
Einen Nachteil gibt es auf jeden Fall: Ich weiß nicht, was passiert, wenn die Funktion mehrfach zur gleichen Zeit ausgeführt wird, also wenn z.b. verschiedene PHP Scripte gleichzeitig die Order-ID eines Datensatzes ändern wollen, ich denke dann wird es bei der jetztigen Implementation zu Fehlern kommen - allerdings habe ich mir da keine weiteren Gedanken drüber gemacht, weil das bei mir ein einem Administrationscenter eingebaut ist, indem eigentlich immer nur eine Person arbeitet, wodurch es eigentlich gar nicht zu Konflikten kommen sollte.
Sei also vorsichtig, wenn du das irgendwo einsetzen möchtest, wo User das aufrufen bzw. aufrufen können, wo du also nicht mehr die Kontrolle darüber hast, wann das aufgerufen wird.
MfG, Dennis.
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Die FlatBox 0.3.1 mit Dokumentation ist da!
let the sunshine in your head - www.schaumerlmal.de