![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() |
![]() PHP-Code:
nun sollen die jüngsten themen als oberstes stehen. also entweder die als letztes geschrieben wurden oder auf die als letztes geantwortet wurde. und dann gibt es noch die option "sticky" die is entweder 0 oder 1 und dann sollen die vor allen anderen dastehn. aber irgendwie ignoriert mir der einfach alles ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
![]() Registriert seit: 02.11.2002
Beiträge: 179
|
![]() musst hierarchisch sortieren. wenn die sticky-beiträge ganz oben sein sollen musst du _zuerst_ nach sticky sortieren, den rest (sowohl die sticky=1 als auch =0) sortierst du dann weiter... wenn du neue und geänderte beiträge "durcheinander" anzeigen möchtest wirst du das mit einem einzigen (gemeinsamen) feld machen müssen, sonst sortiert er immer zuerst nach dem einen, und die entstehenden untergruppen nach dem anderen. hoffe das war jetzt irgendwie verständlich...
____________________________________
It\'s not a bug... It\'s a feature! You know, the main advantage of encrypted paella over ordinary paella is that nobody but you knows what you are eating... (Alvaro) |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() |
![]() naja das feld von der dem themen-datum soll ignoriert werden wenn schon antworten eingetragen wurden und dann stattdessen das datum der antwort zum sortieren benutzt werden. wie mach ich das?
|
![]() |
![]() |
![]() |
#4 |
Inventar
![]() Registriert seit: 26.09.1999
Beiträge: 2.569
|
![]() Ich habe mich mit Foren noch nicht wirklich beschäftigt, aber eventuell wäre ein Extra-Datumsfeld in der Thementabelle eine Möglichkeit, das auch mit dem Antwortdatum upgedatet wird, wenn Antworten erstellt werden.
gruss, snowman
____________________________________
MediaMarkt? Ich bin doch nicht blöd, Mann! Vorsprung durch Technik Lesen Sie keine Anleitungen, FAQs, Readme - Files. Reine Zeitverschwendung. In den Newsgroups und Foren gibt es genug kompetente Leute, die mit großer Geduld immer wieder dieselben einfachen Fragen beantworten. Völlig kostenlos noch dazu! |
![]() |
![]() |
![]() |
#5 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Ich hab zwar in meinem Forum noch keine Sticky-Posts (stehen ziemlich weit unten auf der TodoList
![]() tblForThreads sind die ForumThreads, tblForPosts sind die Posts, FT_ID=Forumthread-id, FS_ID=Forumsection-id, Rest erklärt sich glaub ich von selbst. Du müsstest afaik noch sticky auslesen und zusätzlich danach sortieren. SQL-String schaut so aus: SELECT tblForThreads.FT_ID, tblForThreads.FS_ID, tblForThreads.Hits, Max(tblForPosts.Datum) AS MaxDatum, Count(FP_ID) As Answers, Min(US_ID) as CreatorID, Max(US_ID) as LastposterID FROM tblForThreads INNER JOIN tblForPosts ON tblForThreads.FT_ID = tblForPosts.FT_ID WHERE tblForThreads.FS_ID = $FSID GROUP BY tblForThreads.FT_ID, tblForThreads.FS_ID, tblForThreads.Hits ORDER BY MaxDatum DESC mfg Thomas |
![]() |
![]() |
![]() |
#6 |
Inventar
![]() |
![]() hi danke erstmal.
@snowman: das prob ist ich möchte das ganze so "dynamisch" wie möglich halten. d.h. ich möchte keine endlose löschprozedur für posts sondern einfach den entsprechenden eintrag entfernen. und dann wäre die zeit ja wieder falsch. @t.dot ich hab nun in anlehnung an dein beispiel mit MAX() folgendes gemacht. PHP-Code:
|
![]() |
![]() |
![]() |
#7 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Nun ja, bei mir ist die Struktur so aufgebaut, dass ein Thread mindestens ein Post hat. Und sobald ein Post vorhanden ist gibts auch ein max(datum) davon.
Wenn du aber das Startpost/die Frage/... in die Threadtabelle schreibst (vermut ich mal, sonst müsst ja meines funktionieren) wird dir nichts anderes übrig bleiben als nachher per SQL abzufragen ob ein Wert für das max(datum) vorhanden ist. Unter Umständen bekommst du auch ein Problem, da die Verknüpfung von Thread zu Post nicht mehr funktioniert, da ja keine Posts für den Thread vorhanden sind. Das kannst du aber über ein left oder right join, je nach anwendung, lösen... mfg Thomas |
![]() |
![]() |
![]() |
#8 | |
Inventar
![]() |
![]() Zitat:
ad2: wie meinst du mit joins? mit denen hab ich noch nie gearbeitet und ich hab ka was ich mit denen genau soll. |
|
![]() |
![]() |
![]() |
#9 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Sorry hab mich verschrieben, ich meinte eigentlich per PHP überprüfen ob der Wert vorhanden ist oder nicht.
Joins ganz einfach: du machst es vermutlich so, wenn du was verknüpfst: select * from tblThreads,tblPosts where tblThreads.Thread_id=tblPosts.Thread_id mit joins gelöst sieht das so aus select * from tblThreads INNER JOIN tblPosts ON tblThreads.Thread_id=tblPosts.Thread_id jetzt gibt es die Möglichkeit die Tabellen so zu verknüpfen, das zb immer die Threadtabelle ausgelesen wird, auch wenn bei der Verknüpfung zur Poststabelle nix rauskommt. select * from tblThreads LEFT JOIN tblPosts ON tblThreads.Thread_id=tblPosts.Thread_id right join ist das gleiche umgekehrt: es wird die tabelle rechts von join (in diesem fall tblPosts) genommen und immer die Posts ausgegeben, auch wenns keinen Thread dazu gibt (hat in diesem Fall keinen Sinn) Dann gibts afaik noch outer join (hab ich nie verwendet) wenn ichs richtig im Kopf hab kriegst du dabei das Kreuzprodukt der beiden Tabellen, so wie wenn du "select * from tblThreads,tblPosts" machst. Für genauere Details von Joins hab ich mich nie interessiert, aber Google und co wissen sicher mehr ![]() Nachdem du wahrscheinlich eh irgendwas wie phpmyadmin oder so hast kannst du ja leicht die verschiedenen ergebnisse der sql-abfragen überprüfen... mfg Thomas |
![]() |
![]() |
![]() |
#10 |
Inventar
![]() |
![]() OMG das is schwer. nun hab ich folgendes uamgebastelt:
PHP-Code:
geht das auch und wenn ja wie? |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|