Hallo zusammen,
ein neues Problemchen. Ich habe ein kleines Formular entwickelt, mit dem ich neue Termine in meinem Kalender eintragen kann. Das sind vier Felder, die ich wie folgt in eine Tabelle "Termine" eintrage
Das funktioniert auch prima. Nun habe ich da ein weiteres Feld ID mit auto_increment, so dass jeder neue Eintrag eben eine eigene ID bekommt. Das funktioniert auch.
Weiter habe ich eine Funktion, mit der ich Einträge aus der Tabelle entfernen kann. Das mache ich mit folgenden Code:
Das funktioniert auch. So weit so gut bis hierher.
Wenn ich nun z.B. 10 Einträge habe, habe ich also die ID's 1 bis 10. Nun lösche ich den Eintrag, der die ID 5 hat. Wenn ich mir nun das nächste mal die Daten anzeigen lassen, habe ich in einer Spalte die ID's stehen. Da erscheint dann ja 1,2,3,4,6,7,8,9,10. Wenn ich dann einen neuen Eintrag hinzufüge, bekommt der die ID 11.
Rein funktional ist das ja alles kein Problem. Das funktioniert ja prima, aber irgendwie finde ich das unschön. Ich würde das nun gerne so gestalten, dass wenn ich einen Eintrag lösche, die nachfolgenden Einträge quasi eine neue ID bekommen und zwar, dass die dann eben alle einen zurück rutschen, so dass ich dann nicht 1,2,3,4,6,7,8,9,10,11 habe nach einem gelöschen und dann einem neu eingefügten Eintrag, sondern dass wenn ich einen Eintrag lösche, z.B. mit der ID fünf, dass das dann so aussieht 1,2,3,4,5,6,7,8,9 anstatt 1,2,3,4,6,7,8,9,10.
Ich lese nun die Datensätze aus. Wenn ich nund auf die ID stoße, die eins größer ist, als die ID, die geläscht wurde, wird sie um einen verringert. Allerdings weiß ich nun nnicht, wie ich dann die neue ID wieder an den entsprechnden Platz eintragen soll. Um auf das Beispiel von oben zurück zukommen. Der IEntrag mit der ID 5 wurde gelöscht, der nächste Eintrag hat die ID 6, dessen ID wird um eins verringert und soll nun an die Stelle geschrieben, wo vorher die 6 stand.
Ist sicher ien wneig verwirrend geschrieben, aber ich hoffe man kann da durchblicken.
Mein bisheriger Code zum Auslesen sieht wie folgt aus.
Also ich weiß nciht, wie ich die neue ID dann an den alten Platz schreiben kann.
Gruß
Sven
ein neues Problemchen. Ich habe ein kleines Formular entwickelt, mit dem ich neue Termine in meinem Kalender eintragen kann. Das sind vier Felder, die ich wie folgt in eine Tabelle "Termine" eintrage
Code:
$eintrag = "INSERT INTO Termine (startdatum,enddatum,titel,beschreibung) VALUES ('$startdatum','$enddatum','$neutitel','$neubeschreibung')";
Weiter habe ich eine Funktion, mit der ich Einträge aus der Tabelle entfernen kann. Das mache ich mit folgenden Code:
Code:
mysql_query("delete from Termine where ID='$delid'");
Wenn ich nun z.B. 10 Einträge habe, habe ich also die ID's 1 bis 10. Nun lösche ich den Eintrag, der die ID 5 hat. Wenn ich mir nun das nächste mal die Daten anzeigen lassen, habe ich in einer Spalte die ID's stehen. Da erscheint dann ja 1,2,3,4,6,7,8,9,10. Wenn ich dann einen neuen Eintrag hinzufüge, bekommt der die ID 11.
Rein funktional ist das ja alles kein Problem. Das funktioniert ja prima, aber irgendwie finde ich das unschön. Ich würde das nun gerne so gestalten, dass wenn ich einen Eintrag lösche, die nachfolgenden Einträge quasi eine neue ID bekommen und zwar, dass die dann eben alle einen zurück rutschen, so dass ich dann nicht 1,2,3,4,6,7,8,9,10,11 habe nach einem gelöschen und dann einem neu eingefügten Eintrag, sondern dass wenn ich einen Eintrag lösche, z.B. mit der ID fünf, dass das dann so aussieht 1,2,3,4,5,6,7,8,9 anstatt 1,2,3,4,6,7,8,9,10.
Ich lese nun die Datensätze aus. Wenn ich nund auf die ID stoße, die eins größer ist, als die ID, die geläscht wurde, wird sie um einen verringert. Allerdings weiß ich nun nnicht, wie ich dann die neue ID wieder an den entsprechnden Platz eintragen soll. Um auf das Beispiel von oben zurück zukommen. Der IEntrag mit der ID 5 wurde gelöscht, der nächste Eintrag hat die ID 6, dessen ID wird um eins verringert und soll nun an die Stelle geschrieben, wo vorher die 6 stand.
Ist sicher ien wneig verwirrend geschrieben, aber ich hoffe man kann da durchblicken.
Mein bisheriger Code zum Auslesen sieht wie folgt aus.
Code:
if ($order=="") {$order="startdatum"; $dir="DESC";} $abfrage = "SELECT * from Termine ORDER BY $order $dir"; $ergebnis = @mysql_query($abfrage); // Solange nicht alle Datensätze aus der Tabelle durchlaufen wurde, läuft die Schleife while($row=@mysql_fetch_array($ergebnis)) { // Wenn nun die aktuelle ausgelesene id eins größer ist, als die id des //Eintrags welcher gelöscht wurde, wird von dieser id // einer abgezogen if(($delid+1) == $row['id']) { $newid= $row['id']-1; } // Diese neue id wird dann in die Datenbank eingetragen }/* while($row=@mysql_fetch_array($ergebnis)) */
Gruß
Sven
Kommentar