Möglichkeit um id in MySQL zu sortieren

Bommi

Grünschnabel
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. :confused:

Danke schonmal, Bommi.
 
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 ;) :p


gruß
 
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 :) .
 
Machs doch so:

Code:
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..
 
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 ;)
 
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:
PHP:
$sql = "SELECT * FROM tabelle ORDER BY Zeit DESC";
// usw.
 
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
 
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? :rolleyes:


mfG,
MAN
 
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
 
Zurück