#!/usr/bin Geschrieben 3. Oktober 2003 Teilen Geschrieben 3. Oktober 2003 hallo ich bin dabei ein newsscript mit php und mysql aufzubauen. nun will ich auf der startseite die news aus der mysql- tabelle lesen. ich hab es so gemacht das die news in der mysql- tabelle alle eine id haben. mein newssystem soll immer die neuste news zuerst ausgeben sprich nach ganz oben schreiben. dazu müsste ich die mysql tabelle ja sozusagen rückwärts auslesen. ist das möglich oder gibt es eine andere möglichkeit um das zu realisieren? danke schon mal. MfG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 3. Oktober 2003 Teilen Geschrieben 3. Oktober 2003 Original geschrieben von #!/usr/bin dazu müsste ich die mysql tabelle ja sozusagen rückwärts auslesen. ist das möglich oder gibt es eine andere möglichkeit um das zu realisieren? Einfach DESC dahinter: SELECT * FROM Tabelle ORDER BY id DESC Das Gegenstück dazu wäre ASC Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
#!/usr/bin Geschrieben 5. Oktober 2003 Autor Teilen Geschrieben 5. Oktober 2003 danke das hat ja schon mal super geklappt. inzwischen stehe ich aber vor einem anderen problem. hab ein problem wofür ich noch keine 100% lösung gefunden habe. also ich habe zb. die mysql tabelle ID CONTENT 1 1 2 2 3 3 wenn ich jetzt Datensatz 2 lösche sollen die ids neu vergeben werden. also es soll dann so aussehen ID CONTENT 1 1 2 3 könnt ihr mir da mal auf die sprünge helfen? ich hoffe das klappt so gut wie beim letzen mal MfG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 5. Oktober 2003 Teilen Geschrieben 5. Oktober 2003 Hi! Das ist nicht der Sinn und Zweck einer id. Eine id wird einmal vergeben und sollte dann bestehen bleiben, da in anderen Tabellen über die id auf die Spalte verwiesen wird. Wenn du nun die ids neu vergibst und nicht sicher stellst, das alle Referenzen auf andere Tabellen upgedatet werden, kann aus "Babymilch WC Reiniger" werden und das will doch keiner. Du kannst ja eine Spalte laufende Nummer hinzufügen und die beim löschen updaten. Obwohl ich das eher im Programm lösen würde und nicht in der Datenbank. Grus Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 5. Oktober 2003 Teilen Geschrieben 5. Oktober 2003 Original geschrieben von #!/usr/bin wenn ich jetzt Datensatz 2 lösche sollen die ids neu vergeben werden. Ich vermute mal, das id dein Primärschlüssel ist. Damit bezeichnest du ja einen Datensatz eindeutig. Wenn du auf einmal den Primärschlüssel änderst bringst du die ganze Datenbank damit durcheinander. Wenn du weitere Tabellen hast, die diese id als Fremdschlüssel benutzen finden diese Tabellen den Datensatz aus der ersten Tabelle nicht mehr. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 5. Oktober 2003 Teilen Geschrieben 5. Oktober 2003 Du weisst schon um den Sinn der ID? Sprich : Du müsstest die komplette Datenbank durchforsten um sämtliche, auf die betreffende und alle folgende ID-Verweise entsprechend anzupassen. Und dieses ist sicherlich ein Aufwand, den man dir nicht zumuten sollte. Was stört dich an den Lücken? Auf alle Fälle vermeidet eine Nichtanpassung Fehlerquellen in deiner Datenbank. PS: Bind nicht gerade ein MySQL - Entwickler, sondern programmiere datenbanken auf anderen Plattformen. Also der generelle Sinn der automatisch (nichtanpassbaren) ID ist IMHO schon gerechtfertigt. Edit : Zu spät! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
#!/usr/bin Geschrieben 5. Oktober 2003 Autor Teilen Geschrieben 5. Oktober 2003 das mit der tabellenspalte war nur ein beispiel. ich könnte auch eine weitere spalte nehmen die den inhalt der id hat und danach sortieren. warum ich keine lücken zwischen den id werten haben wollte ist ganz einfach. wenn ich einen neuen datensatz hinzufüge braucht der ja auch eine id. bis jetzt hab ich es so gemacht, dass ein neuer datensatz die id (anzahl aller datensaetze + 1) bekommt wenn ich wie in meinem beispiel oben jetzt nr 3 gelöscht habe, gibt es 2 datensaetze und + 1 wäre die neue id 3, die gibt es aber schon. also müsste ich jetzt noch mal um 1 erhöhen. und das solange bis eine freie zahl kommt. das wollte ich vermeiden. außerdem würde die zahl ja immer höher je mehr datensaetze geloescht und wieder hinzugefügt werden. oder habt ihr bessere vorschläge? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 5. Oktober 2003 Teilen Geschrieben 5. Oktober 2003 Stichwort auto_increment oder SELECT MAX(id) FROM ... in einer Transaktion. integer geht bei mysql bis 2147483647 bigint bis 9223372036854775807 Das sollte ne Weile reichen. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.