Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.