Zum Inhalt springen

PHP PRIMERYKEY nach Zeilenlöschung überschreiben


grünschnabel

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...