# hilfe mit id, auto_increment etc



## Rios (9. Februar 2002)

habt Gnade mit mir, hab noch kaum erfahrung mit php,mysql. 
Will eine Tabelle nach index sortiert ausgeben. Nur komischerweise kriegt der 1. Eintrag die Nr.3 der 2. die Nr.4 usw.
Hab ich da im phpmyadmin ne falsche einstellung oder so? das id feld is auto_increment und auch primary key.
cuinger


----------



## netzbazille (9. Februar 2002)

Wahrscheinlich liegt es daran, dass du schon Einträge in der Tabelle hattest und diese wieder gelöscht hast. Bei einem auto_increment-Feld wieder der interne Zähler nur beim Eintragen hochgezählt, allerdings beim Löschen von Datensätzen nicht verringert (wäre ja auch irgendwie unbrauchbar )


----------



## Rios (9. Februar 2002)

oh ja das kann sein. und wie lös ich das problem am schlauesten? tabelle nochmal neu anlegen?


----------



## Dunsti (9. Februar 2002)

jo, am besten ne neue Tabelle anlegen, dann sollte er wieder bei 0 anfangen 


Dunsti


----------



## netzbazille (9. Februar 2002)

Sollte eigentlich auch durch 'DELETE FROM <tabelle>' funktionieren. Dadurch wird die komplette Tabelle geleert und der Wert für auto_increment steht wieder auf 1 (geht zumindest in phpMyAdmin).

Gruß


----------



## Rios (11. Februar 2002)

hast recht netzbazille, geht auch so 
thx


----------



## webpat2002 (21. Februar 2002)

Hallo !!!

Ist es wirklich die einzige Möglichkeit (ALLE DATENSÄTZE LÖSCHEN) wenn man ein Lücke in der ID Spalte ausmerzen will? Dann muss man ja alle vorhanden Datensätze neu schreiben ...

Ich wollte nämlich ein Gästebuch programmieren, bei dem ich als Administrator auch Einträge kicken kann. Aber enstehende Lücken in der fortlaufenden ID wären sehr unpraktisch ....

Hat jemand noch eine bessere Lösung parat ?
Danke und Grüße, Patrick.


----------



## Matthias Reitinger (21. Februar 2002)

Wo liegt denn das Problem bei Lücken in der ID-Spalte?


----------



## redback79 (21. März 2002)

soviel ich weiss, werden durch den befehl 

OPTIMIZE TABLE `tabellenname`  

"gelöschte" einträge RICHTIG gelöscht und die nummern sozusagen "nachgeschoben"...


korrigiert mich, wenn ich mich geirrt habe! 


mfg RedBack


----------



## Morph (27. März 2002)

Wollt zu der Frage eigentlich nen Thread aufmachen, hab aber dann den hier entdeckt. Also Reima los jetzt, erklärs uns 

Grüße, Morph


----------



## Sebastianus (28. März 2002)

*Warum Id nutzen?*

Hola!
Also ich würde es ganz anders machen. Anstelle, dass ich die ID benutze um mir die Einträge anzeigen zu lassen würde ich sie ganz einfach in einer Schelife natürlich auslesen lassen und dabei einen Wert $i einfach stets um ein erhöhen lassen und vor den Eintrag printen. Ist doch wesentlich einfacher.
Foffe das warjetzt trotz der kürze Verständlich!
MFG
Sebastianus


----------



## Matthias Reitinger (29. März 2002)

@Sebastianus:
Es geht ja nicht darum, dass bei der Ausgabe eine Nummer vor den Einträgen steht. Das löst man natürlich mit einer Zählschleife, schon klar.
Vielmehr braucht man die eindeutige ID intern, um einen Eintrag eindeutig zu identifizieren.

@Morph: Äh, was soll ich erklären? Was OPTIMIZE macht? Auf keinen Fall das, was redback79 meinte, wenn man der offiziellen mySQL-Dokumentation glauben darf  OPTIMIZE tut nur das, was der Name schon sagt: es optimiert die Tabelle. Anzuwenden nach vielen Löschvorgängen und/oder Änderungen in der Tabelle. Mehr Infos dazu gibt's auf http://www.mysql.com/doc/O/P/OPTIMIZE_TABLE.html


reima


----------



## FreeZee (5. November 2002)

Kann man dieses Problem auch ohne leeren der Tabelle lösen??


----------



## Rios (5. November 2002)

lol wo hast du denn den thread ausgegraben 

Also ich wüsste jetzt keinen weg ohne sie zu leeren, aber du kannst ja einen mysql dump erzeugen mit dem du die daten schnell wieder in die db zurückkriegst


----------



## Dario Linsky (5. November 2002)

lösch doch einfach nur das feld mit dem auto_increment-flag und füg es nachher wieder neu ein. also nicht den inhalt des feldes, sondern das gesamte feld, mit "ALTER TABLE" sollte das machbar sein.
allerdings weiss ich nicht, ob man das danach auch wieder als auto_increment wieder einfügen kann. aber mit auto_increment hat man langfristig eh nur probleme, es ist besser wenn man sich seinen primärschlüssel selbst erstellt. dann hat man wenigstens kontrolle über seine daten.


----------



## melmager (5. November 2002)

wobei ich immer noch nicht verstehe warum einige user wert auf eine fortlaufende id legen 
sobald eine referenz zu einer anderen tabelle gebraucht wird kann mann das eh nicht mehr selber verwalten


----------

