id verringern funktioniert nicht

bubblegumsoldier

Grünschnabel
Hi Leute ich hatte ma ne Frage:

Ich habe hier einen Script, bei dem ich zuerst den Eintrag der mysql tabelle lösche, der die id der Post var hat. Danach soll es so angepasst werden, dass alles was größer war als die id um eins verringert wird, damit wieder die ids von 1-5 oder so richtig gehen. Doch im Moment sieht es noch so aus:

  1. Eintrag
  2. ein weiterer Eintrag
  3. Noch einer
  4. Noch ma
  5. und so weiter

So dann lösche ich das zweite... doch dann sieht es so aus:

1. Eintrag
3. Noch einer <--- UNd hier wurde jetzt nicht verringert und es is 1,3,4,5
4. Noch ma
5. und so weiter

Hier der Code:

PHP:
<?php
include("mysql_inc_32/connect.php");

$con = connection();



$s_2 = "DELETE FROM table WHERE id=" . $_GET['id'];
$sql_2 = mysql_query($s_2);
if($sql_2 == true){
echo("Erfolgreich");
}else{
echo("Fehler");
}

$result = mysql_query("SELECT * FROM table WHERE id>" . $_GET['id']);
while($row = mysql_fetch_object($result))
{	
	
	$id = $row->id;
	$s = "UPDATE table SET id = " . intval($id)-1 . " WHERE id=" . $id;
	$query = mysql_query($s);
	
}

?>
 
Wieso lässt du die id durch die Funktion interval laufen?

Die id sollte doch schon eine Zahl sein.

PHP:
 <?php
include("mysql_inc_32/connect.php");

$con = connection();

$s_2 = "DELETE FROM table WHERE id=" . $_GET['id'];
$sql_2 = mysql_query($s_2);
if($sql_2 == true){
$result = mysql_query("SELECT * FROM table WHERE id>" . $_GET['id']);
while($row = mysql_fetch_object($result))
{      
    $id = $row->id;
    $s = "UPDATE table SET id = " . $id . "-1 WHERE id=" . $id;
    $query = mysql_query($s);
  }
 echo("Erfolgreich");
 }else{
echo("Fehler");
}

?>

Probier mal das so.
 
Hi

Wozu willst du das machen?
Es ist eine sehr schlechte Idee. Eine DB ist kein blankes C-Array.
Du verbrauchst nur sinnlos Leistung.
Je nach Grund gibt es sicher einen anderen Weg...
 
Das Lücken in der ID-reihe stehen, ist ganz normal und völlig ok!
Die Id dient keinesfalls zum zählen der Datensätze, falls du das damit vorhast, sondern zur eindeutigen IDentifizierung der selbigen, wie dir zB bei der Löschng aufgefallen sein könnte. (Es wird nach ID gelöscht, weil eindeutig)
 
Noch ein paar Gründe, die IDs nicht zu ändern:
1) Doppelaufrufe der Löschfunktion könnten sich überschneiden, beim Ändern der IDs. Ist zwar relativ unwahrscheinlich, aber je nach Verwendungszweck auch realistisch.
2) Wenn an diese Einträge weitere Informationen in anderen Tabellen gebunden sind, werden diese nicht geändert und somit entsteht ein schickes Chaos in der Datenbank. Dann hat auf einmal die ID2, welche vorher ID3 war, nen Eintrag, den sie nicht haben sollte.
3) Wie bereits erwähnt die Ressourcen
4) Unprofessionell
 
Zurück