Anzeigen aller Daten eines Tages

Kurito

Grünschnabel
Hi,

ich habe mir ein kleines Newsscript für meine Seite geschrieben. Eigentlich funktioniert auch alles, bloss beim Anzeigen der News, macht das Script nicht das, was ich will.
Ich habe vor, alle Headlines eines Tages anzeigen zu lassen. Darunter kommt dann das nächste Datum und davon dann die Headlines, jedoch insgesamt nur, sagen wir, 20 Stück.
Also ungefähr so:

[DATUM(HEUTE)]
-Erste Headline
-Zweite Headline
...
-Letzte Headline

Falls es weniger als 20 Beiträge sind, soll dann das angezeigt werden:
[DATUM(GESTERN)]
-Erste Headline
-Zweite Headline
...

Jedoch möchte ich es so haben, dass das aktuelle Datum erst dann angezeigt wird, wenn bereits eine Headline dafür vorhanden ist.

Um die Zeiten der Einträge festzuhalten, benutze ich ein INT Feld, in das ich den jeweligen Unix-Timestamp eintragen lasse.

Ich danke euch schonmal im Vorraus.

MfG
Kurito
 
Hi,

ohne jetzt zu wissen, welche Datenbank...Scriptsprache Du nutzt, würde ich sagen, die Kleinarbeit wirst Du im Scripting erledigen müssen, nicht in der SQL.

Meinetwegen Du nutzt eine Access-DB und ASP wäre dies wie folgt zu lösen:

Du liest Dir die 20 aktuellsten Datensätze via SQL heraus (top 20), sortierst im Order by nach dem Datum, id. Wobei dies in Access auch als Datum definiert sein muss.

In der Ausgabe fragst Du eine Variable ab und vergleichst diese mit dem nachfolgenden Datensatz, welchen Du in der Variablen definierst und setzt es als sog. Überschrift für nachfolgende Headlines.

bsp. für while-wend-Schleife

[...]
while not rs.eof
dim myVarDatum
if myVarDatum ="" or myVarDatum <> rs("myDatum")
Response.write rs("myDatum") & "<br>"
myVarDatum = rs("myDatum")
end if
Response.write rs("headline") & "<br>"
rs.movenext
wend
[...]
 
Zuletzt bearbeitet:
Hi,
bei der ganzen Aufregung mit dem Script habe ich natürlich vergessen zu schreiben, womit ich arbeite :)
Ich benutze PHP mit MySQL.
Deswegen hilft mir der ASP Code leider nicht viel (kenne mich mit ASP überhaupt nicht aus).

Trotzdem Danke.
MfG
Kurito
 
Anstelle der top 20 gibts in mySQL doch die Limits.

Bin kein php-Profi, daher nur so als Lösungsansatz für deine Schleife, wie bereits in meinem Script umgesetzt:

Schleifenanfang
vorbesetzte Variable varDatum mit "" oder varDatum ungleich DatenbankDatumsFeld
DatenbankDatumsfeld ausgeben
varDatum=DatenbankDatumsfeld
Ausgabe der restl. Felder z.B. headlines
Schleifenende

Unbedingt Sortierung in der SQL beachten, erst Datum, dann ID

In die korrekte Syntax musst du es jetzt schon bringen oder jemand anders Dir in php umsetzen.

Vom Programmier-Ablauf dürfte es in php nicht anders sein als in asp.
 
Hmm. Werds morgen mal versuche in PHP umzusetzen.
Habe es aber schonmal so in der Art versucht.

Wenn ich Dich richtig verstehe müsste ich in der While Schleife nochmal eine If Abfrage starten, die alle News, die nicht auf das Datum passen aussortiert.
Aber leider zählt die While-Schleife die Anzahl der Datensätze. Wenn ich also irgendwo in der While-Schleife das Datumsfeld einsetze, wird mir das genauso oft angezeigt, wie Datensätze vorhanden sind. Also würde das ungefähr so aussehen:

HEUTE:
-News1
-News2
-News3
GESTERN:
-News4
GESTERN-1:
GESTERN-2:

Kann mich jetzt aber auch irren, bin grade etwas müde :)

Danke,
Kurito
 
hmmm

ist wirklich nicht einfach..

gestern-1 und gestern-2 dürfte in Deiner Ausführung gar nicht vorhanden sein, wenn dieses Datum KEINEM Datensatz innerhalb der 20 Datensätze zugeordnet ist bzw. nicht existiert. Wenn aber z.B. unter gestern-3 wieder ein Datensatz existiert, würde der anstelle dessen angezeigt.

bsp.
HEUTE:
-News1
-News2
-News3
GESTERN:
-News4
GESTERN-3
-News5

Ich kann es nur so erklären
Erstelle eine Variable, frag diese auf =""ab ODER vergleich die Variable mit dem DatenbankDatumsfeld. Der Variablen gibst Du in der if-Abfrage den Wert des DatenbankDatumsfelds. Also eigentlich ein Verglich mit sich selbst.

Im Script wird dies immer mit dem nächsten Feld verglichen (deshalb die unbedingt korrekte Sortierung in der SQL), findet er einen gleichen Wert, wird keine neue Überschrift mit Datum erstellt, sondern dieser Datensatz in der Schleife der vorherigen Überschrift zugeordnet..., bis ein neuer Wert für das Datumsfeld kommt (also gestern oder gestern-1 etc., da beginnt das Spiel von vorn. Maximal 20 Datensätze betreffend.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück