# Möglichkeit um id in MySQL zu sortieren



## Bommi (18. September 2004)

Hi Leute!
Ich hab da mal n Problem also folgendes:
Auf meiner Seite gibt es ein Gästebuch, oben steht dann etwas wie _echo "Nr. ".$id;_ wobei $id die ID des Beitrags aus der Tabelle ist. 
So wenn ich nun in meinem selbstgebautem Admin-Panel einen Beitrag lösche, fehlt mir zwischendrin ja eine Nummer... 
(Bsp.:  Eintrag nr. 1 ; Eintrag nr. 2 ; Eintrag nr. 4 ; Eintrag nr. 5 )
So das sieht ja nicht so gut aus. Nun wollte ich fragen ob es eine Möglichkeit gibt die Id's nach dem timestamt in der Tabelle neu zu schreiben.   

Danke schonmal, Bommi.


----------



## Resident_DeeJay (18. September 2004)

du kannst do dem jeweiligen Beitrag eine nummer zuweisen ohne die ID anpacken zu müssen

bei der abfrage aus der Datenbank machste es einfach 

$nr stallt die Beitrags nr da

da du ja sicherlich die beitrage mit einer schleife rausholst erhöst du bei jedem beitrag der grade abgefragt wir den wert $nr um eines, dies geht am besten mit $nr++;  vor der Schelife  musst du aber das setzen damit er auch  einen anhalts punkt hat $nr = 0;

und  dann entsprechend deine templates abändern, Überall wo die anzeige der nr. des Beitrags ist die du meinst ersetzt du es einfach durch  $nr.

das wars auch scho  

Relativ simpel auch wenn meine beschreibung nicht so den anschein macht  


gruß


----------



## Bommi (18. September 2004)

Ja und wie kann ich das machen wenn ich die Beiträge nach neustem sorteiren will? Sonst währe das ja so:

Nr 1
Nr 2
Nr 3
Nr 4

und ich will ja 

Nr 4
Nr 3
Nr 2
Nr 1

haben. Danke schonmal wie immer  .


----------



## ByteDigger (18. September 2004)

Machs doch so:


```
Lösche Eintrag soundso. Danach gleich:

ALTER TABLE `startseite` DROP `id` 

ALTER TABLE `startseite` ADD `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;
```

Löscht die Spalte ID komplett. In der zweiten Anweisung wird die Spalte id wieder erzeugt, samt Primärindex usw.. Die alte Sortierung bleibt erhalten und dein ID - Feld hat keine Lücken...

Ausserdem würde ich die ID auch nicht ausgeben sondern einfach wie Resident_Deejay schon sagt die Variable der Laufschleife nehmen.. 
Ob die jetzt mit der ID überienstoimmt ist ja egal..


----------



## Bommi (18. September 2004)

Ja aber ich möchte das halt so haben dass die neuste also größte zahl oben steht...


----------



## Resident_DeeJay (18. September 2004)

Boomi in diesem fall machst es so wie ich oben schon sagte nur  mit  einem zusatz und einer Änderung


Änderung $nr++; in $nr--; Ändern

zusatz

vor dem Punkt wo du $nr den wert null (0) Übergibst  stellst du eine Datenbank abfrage  die den inhalt zählt.

SELECT count(id) AS id FROM tabelle;

diesen wert den du damit erhälst Übergibst du der Variable nr; und durch das $nr--; wird zurück gezählt


----------



## Karl Förster (18. September 2004)

Irgendwie redet ihr alle so halb am Thema vorbei.  Die eigentliche Frage, die jetzt noch dahinter stand ist, wie er die Beiträge zeitlich sortiert bekommt. Ich würde das ganze nie nach ID sortieren, sondern immer nach Zeit. Dazu ist es nötig, dass du einen Zeitstempel zu jedem Gästebucheintrag speicherst.  Erstelle dazu in deiner Tabelle z.B. ein Feld "Zeit" vom Typ TIMESTAMP oder DATETIME. Ich persönlich nehme lieber DATETIME. Wenn ein Eintrag erstellt wird, speicherst du in dieses Feld einfach die aktuelle Zeit.
Beim Auslesen der Daten sortierst du einfach nach diesem Feld:

```
$sql = "SELECT * FROM tabelle ORDER BY Zeit DESC";
// usw.
```


----------



## Bommi (18. September 2004)

Danke ihr habt mir sehr geholfen... ich hab jetzt einfach $nr=mysql_num_rows($..) und dann wie von Resident_DeeJay einfach for ($i=0; $i<$num; $i++, $nr--) geschrieben und dann immer $nr ausgegeben. 

Bye


----------



## MAN (19. September 2004)

> _Original geschrieben von Karl Förster_
> *Ich würde das ganze nie nach ID sortieren, sondern immer nach Zeit.*


Warum?

Wenn du mit den IDs nicht rumwerkelst (wie zum beispiel löschen, oder ändern), dann kann man sich die Einträge doch absteigend sortiert nach der ID ausgeben lassen, oder nicht? 


mfG,
MAN


----------



## Bommi (19. September 2004)

Ja aber ich werkel da halt dran rum... Gästebucheinträge etc müssen auch mal gelöscht etc werden... naja gibt halt spinner  . 

Bommi


----------



## MAN (19. September 2004)

Nene, am Löschen liegts ja nicht! Wenn du ein Eintrag löschst, kannst du ja immernoch nach der ID sortieren, und die Reihenfolge bleibt gleich, oder nicht?


mfG,
MAN


----------



## Bommi (19. September 2004)

Ja das ist richtig aber wenn ich echo "NR. ".$id; schreib dann fehlt ja zwischendrinne was wenn ich was lösche. Ist doch klar oder?


----------



## MAN (19. September 2004)

Klar!

Die Frage von mir war ja nur, warum man es nicht nach der ID *sortieren* kann!

Wenn du es nach Datum sortierst kannst du ja auch nicht schreiben:

echo "NR. ".$time; 




mfG,
MAN


----------



## Bommi (19. September 2004)

Stimmt okay hast gewonnen  .


----------



## MAN (19. September 2004)

Ok... :suspekt:

*ggg*


----------

