Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben
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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...