Webdesign in Siegen

ID's Ordnen und nachrücken (MySQL+PHP)

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon satinez am 03.02.2008, 18:04

ciao! Arbeite soeben an einem kleinen TODO script.


http://79.133.63.251/todo/

Habe das Problem, wenn ich einen POST lösche, wird auch die ID gelöscht. Das heisst z.B. man kann es sehr gut sehen das der erste POST die ID 8 hat.

Ich möchte es so machen, das nach ID soritert wird. Eventuell die Records gezählt werden und dann die ID (neu)vergeben wird geordnet, damit kein Lücken entstehen.


ist dies möglich ?
Bild
Benutzeravatar
satinez
Mitglied
 
Beiträge: 338
Registriert: 18.09.2006
Wohnort: Schweiz/Basel

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon Avedo am 03.02.2008, 19:55

Natürlich ist das möglich und du hast ja auch im Prinzip schon gesagt wie. Du liest die kompete DB in ein Array ein Sortierst das Array nach den IDs und ersetzt danach die IDs in einer Schleife. Danach trägst du alles wieder in die DB ein. Ob das ganze auch einfacher geht? ich wüsste nicht wie. Wo liegt das Problem bei dieser Sache? Es dauert ewig.
MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 548
Registriert: 09.12.2007
Wohnort: Göttingen

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon Basti am 03.02.2008, 20:01

Welchen Zweck soll das ganze denn haben?

Eine ID ist ja prinzipiell dazu gedacht, dass jeder Eintrag eindeutig zugeordnet werden kann. Die "Lücken" die beim Löschen entstehen sind ja prinzipiell auch nicht weiter schlimm.
Du hast dann aber nach wie vor die Möglichkeit, nach der ID zu sortieren, das macht ja keinen Unterschied. Mithilfe der MySQL count()-Funktion lassen sich die Einträge auch leicht zählen.

Ich weiß zwar jetzt nicht genau, warum dir das mit "Lücken" wichtig ist, aber eigentlich macht so etwas nicht sehr viel Sinn, zumal dann ja alle IDs nach dem Entfernen eines Eintrags neu berechnet werden müssten und Links mit den alten IDs dann je nachdem auch ungültig würden.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1880
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon Avedo am 03.02.2008, 20:15

Da hat Basti schon recht. Sinnvoll ist sowas auf keinen Fall (vorallem der Rechenzeit wegen), machbar aber schon.
Mfg, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 548
Registriert: 09.12.2007
Wohnort: Göttingen

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon satinez am 03.02.2008, 20:15

Danke für eure Hilfe.

Möchte einfach das wenn ich z.B. drei POST's da stehen habe, dass die sortiert sind.

Sprich erster POST = ID 1
zweiter POST = ID 2
dritter POST = ID 3

Sobald ID 2 gelöscht wird, soll ID 3 die ID 2 bekommen usw. , also in dem Sinne von nachrucken oder vorrucken.


was das ganze bringen wird, weiss ich noch nicht, bin am Anfang :D
Bild
Benutzeravatar
satinez
Mitglied
 
Beiträge: 338
Registriert: 18.09.2006
Wohnort: Schweiz/Basel

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon Avedo am 03.02.2008, 22:45

Wenn du noch nicht weißt, was das bringt, dann lass es. Wenn du soetwas umsetzen möchtest, dann nimmst du in Kauf, dass du sehr lange Rechenzeiten hast. Zudem kannst du die DB-Einträge bei der Abfrage schon nach der ID ordnen. Dabei ist es vollkommen egal, ob die Reihe von IDs Lücken hat oder nicht. Tue dir selbst einen Gefallen und verschwende deine Zeit nicht mit soetwas. In dieser Zeit kannst du besser dein System optimieren. Zudem würde ich an deiner Stelle mal die Ausgabe des Systems überarbeiten, denn ich finde das ganze absolut unübersichtlich.
MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 548
Registriert: 09.12.2007
Wohnort: Göttingen

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon satinez am 04.02.2008, 20:19

Es ist auch noch lange nicht fertig xD

Ich wollte einfach wissen ob das ueberhaupt möglich ist. und wenn ja wie..

Wenn ich nicht nach ID ordnen kann, nach was dann ? Datum?

Oder kennt da jemand eine andere Lösung?
Bild
Benutzeravatar
satinez
Mitglied
 
Beiträge: 338
Registriert: 18.09.2006
Wohnort: Schweiz/Basel

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon Basti am 04.02.2008, 20:24

Nach der ID kannst du ja nach wie vor sortieren, das macht ja keinen Unterschied ob dort jetzt "Lücken" sind.

Eine 8 ist auch ohne eine 7 dazwischen noch größer als eine 6 ;)

Also einfach im MySQL Statement ein "ORDER BY id DESC" anhängen und schon werden die Datensätze sortiert nach der ID zurückgegeben.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1880
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon Avedo am 04.02.2008, 21:17

Basti sagt es. Das gute alte ORDER BY. Ich kann dir nur nochmal sagen, dass das Aktualisieren der IDs totaler Humbuck ist. Sortieren geht, wie Basti bereits ja ganz richtig sagte, auch mit "Lücken" in der ID-Reihenfolge. Du hast dann halt nicht mehr 123456 sondern 13469 (oder so ähnlich). Nach Datum und Uhrzeit kannst du natürlich auch sortieren. Dann heißt das ganze halt "ORDER BY date DESC". Das DESC steht hierbei für die Art der Sortierung, das ORDER BY ist sozusagen der Grundbefehl und das in der Mitte ist der Spalten-Name aus deiner Tabelle.
MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 548
Registriert: 09.12.2007
Wohnort: Göttingen

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon satinez am 04.02.2008, 22:57

ok. Eigentlich wollte ich da hinaus, dass ich 5 POST's habe und von 1 beginnend gezählt wird wieviele POSTs vorhanden sind mit der ID, schade :(


Code: Alles auswählen
$result = mysql_query("SELECT ID, name, text, date FROM
s_todo ORDER BY ID ASC") OR die(mysql_error());



so richtig ?
Bild
Benutzeravatar
satinez
Mitglied
 
Beiträge: 338
Registriert: 18.09.2006
Wohnort: Schweiz/Basel

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon Avedo am 04.02.2008, 23:09

Ja eigentlich ist das richtig. Aber es sieht mir so aus als würdest du alle Spalten deiner Tabelle auslesen und das geht etwas einfacher. Nimm dafür den *-Operator. Und warum ASC? Müsste doch eigentlich DESC sein oder täusche ich mich da?
Code: Alles auswählen
$result = mysql_query("SELECT * FROM s_todo ORDER BY ID ASC") OR die(mysql_error());

MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 548
Registriert: 09.12.2007
Wohnort: Göttingen

Re: ID's Ordnen und nachrücken (MySQL+PHP)

Beitragvon satinez am 04.02.2008, 23:28

jo eigentlich gute IDEE mit * xD
also mit ASC ist die kleinste ID oben, so gefällts.
Bild
Benutzeravatar
satinez
Mitglied
 
Beiträge: 338
Registriert: 18.09.2006
Wohnort: Schweiz/Basel


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast