grünschnabel Geschrieben 15. März 2009 Teilen Geschrieben 15. März 2009 Hallo Leute, ich "breche mir mal wieder die Finger", um hier nach einer Zeilenlöschung den PRIMERY KEY hochgezählten Wert zu überschreiben, bzw. automatisch am Lückenzustand zu aktualisieren. Dieser wird bei mir unter dem Spaltennamen "Zeile" ausgeworfen. Also z.B. Feld Zeile | Name ... 1 .... | xxx 2 .... | YYY 3 .... | zzz Nach Löschung z.B. der Zeile 2 sieht das dann im Abruf der Tabelle am Bildschirm dann so aus: Zeile | Name ... 1 .... | xxx 3 .... | zzz Nach der Löschung sollen die übrigen vorliegenden Zeilen im PRIMERY KEY überschrieben werden, also: Zeile | Name ... 1 .... | xxx 2 .... | zzz Mit der hier unten sicherlich gedanklich auch umständlichen Zuwendung funktioniert das nicht. <?php $loeschen = "DELETE FROM $Tabelle WHERE Zeile = '$Line'"; $loesch = mysql_query($loeschen); $Zeilenabfrage = "SELECT Zeile FROM $Tabelle"; $Ergebnis = mysql_query($Zeilenabfrage); $Line = 0; while($row = mysql_fetch_object($Ergebnis)) { $Line = $Line + 1; $Korrektur = "UPDATE $Tabelle Set Zeile = '$Line'"; $Update = mysql_query($Korrektur); } ?> [/php] [b]Wer kann bitte helfen !?[/b] Gruß Grünschnabel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 15. März 2009 Teilen Geschrieben 15. März 2009 Hallo, normalerweise änder man nie nie nie hinterher einen Primary Key. Das zwischen den Keys lücken entstehen liegt in der natur der Sache. Bei dir ist es jetzt vielleicht eine übersichtliche Datenbank mit zwei - drei Tabellen. Aber wenn Du dir das ganze mal mit 100 Tabellen vorstellst, dann kann es nur irgendwann schief gehen und dann hast Du inkonsistente Daten. Denn dann kommt mal hier und da eine Taabelle hinzu und man hat das Löschskript nicht geändert und prompt hast Du den Salat. Dann zeigen Fremdschlüssel aus der neuen Tabelle ins leere. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 15. März 2009 Teilen Geschrieben 15. März 2009 Ich verstehe nicht wofür das überhaupt notwendig wäre. Aber ich schließe mich da meinem Vorredner an, der PK wird genau einmal vergeben und nicht mehr geändert Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grünschnabel Geschrieben 15. März 2009 Autor Teilen Geschrieben 15. März 2009 Ja verstehe ich im Grundsatz schon, nur möchte ich schon alles ordentlich verwalten können. In meinem Testaufbau wird ein Neueintrag in einer nicht vorhandenen Tabelle unter einer neuen entsprechenden Tabellennamenanlegung outomatisch unter der Zeile 1 abgelegt, sofern in der Zuordnung noch keine Tabelle vorliegt, ansonsten bei Existent einer entsprechenden Tabelle am Ende als Letzte Zeile angehängt, also bei bereits 4 vorliegenden Einträgen dann unter der Zeile 5 verwaltet werden kann und mit jedem neuen Eintrag entsprechend auf 6 ect. erhöht wird. Werden allerdings etwa alle Zeilen gelöscht, dann wird auch über mysql_query("ALTER TABLE $Tabelle AUTO_INCREMENT = 1"); der erste Eintrag mit Zeile 1 wieder neu aufbauend angelegt und nicht etwa mit Zeile 7 oder etwa Zeile 124230, die ggf. zwischenzeitlich alle gelöscht wurden. ---------- Wäre sinnbildlich genauso, als wenn nach einem Erdbeben von San Francisco einen ganzen Stadtteil / Straße mit sämtlichen Häuser zerstörend im Wideraufbau neuer völlig anderer Gebäudestrukturen / Anzahlen hier die alten Hausnummern verwendet würden, wo es die Häser gar nicht mehr gibt, sprich eine Neue oder geänderte Tabelle auch eine neue Zeilenhochrechnung bedürfen sollte, was ja auch übrigens ohne "Salat" funktioniert, wenn nach Zeilenlöschung die die hochgerechneten PRIMERYKEY Werte manuel über MyAdmin überschrieben werden und in weiterer PHP Anwendung ein Neueintrag hier wieder entsprechend korrekt anhängt wird. Gruß Grünschnabel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 15. März 2009 Teilen Geschrieben 15. März 2009 Ja verstehe ich im Grundsatz schon, nur möchte ich schon alles ordentlich verwalten können. Wenn Du den Grundsatz verstehst, wo ist dann das Problem. In meinem Testaufbau wird ein Neueintrag in einer nicht vorhandenen Tabelle unter einer neuen entsprechenden Tabellennamenanlegung outomatisch unter der Zeile 1 abgelegt, sofern in der Zuordnung noch keine Tabelle vorliegt, ansonsten bei Existent einer entsprechenden Tabelle am Ende als Letzte Zeile angehängt, Sehe ich das richtig zu erzeugst dyn. neue Tabellen? Das sollte man nicht machen, denn das Modell deiner DB ist damit hinfällig. Ebenso hat nur der Admin auf der DB das Recht die Tabellenstrukturen zu verändern, alles andere wäre ein Sicheitsrisiko. Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.