Datum nur einmal ausgeben wenn mehrmals vorhanden.
Simon
- php
Hallo,
ich wusste nicht genau wie ich das nennen soll.
Naja!
Also,
ich habe hier mal bisschen mit mysql und php was versucht.
Soll eine Art News Script werden.
Also ich trage was in die Felder ein, drücke auf abschicken und in der mysql werden dann username, Datum, zeit und so gespeichert.
Wenn ich jetzt mehrere einträge mache, ist das Datum ja doppelt da.
Nun mache ich eine ausgabe mit while schleife, damit halt alle News angegeben werden.
Nun will ich aber immer das Datum drüber stehen haben und die Zeit, nur wenn ich das nun ausgebe sieht das so aus:
4.11.05 - 20Uhr
testnews1
4.11.05 - 21Uhr
testnews2
4.11.05 - 22Uhr
testnews3
5.11.05 - 18Uhr
testnews1
5.11.05 - 19Uhr
testnews2
es wird also immer wieder das Datum ausgegeben.
Wie kann ich es nun so machen, das das Datum von einem Tag nur einmal da steht? also so:
4.11.05 - 22Uhr
testnews1
testnews2
testnews3
5.11.05 - 19Uhr
testnews1
testnews2
und dann halt noch das immer die Zeit von dem letzten Eintrag genommen wird?
Hoffe ich habe es verständlich gemacht.
Danke schon mal, Gruss Simon
hi,
ich wusste nicht genau wie ich das nennen soll.
Nenne es Gruppenwechsel, denn so nennt man sowas :-)
Wie kann ich es nun so machen, das das Datum von einem Tag nur einmal da steht?
Vergleiche jeweils das Datum des Datensatzes aus dem aktuellen Schleifendurchlauf mit dem des vorherigen - wenn es gleich ist, gebe es nicht aus.
Merke dir am Ende der Schleife das Datum des aktuellen Datensatzes, um es im nächsten Durchlauf zum Vergleich zur Verfügung zu haben.
Und initialisiere vor dem Schleifenstart den Vergleichswert mit einem Wert, der in den Daten garantiert nicht vorkommt.
gruß,
wahsaga
Hallo wahsaga
Vergleiche jeweils das Datum des Datensatzes aus dem aktuellen Schleifendurchlauf mit dem des vorherigen - wenn es gleich ist, gebe es nicht aus.
Habe mir das nun so gedacht, das ich da irgendwie eine "if" abfrage reinpacke.
Soll ich da nun 2 While schleifen machen? eine wo der das Datum überprüft und eine wo der die News ausgibt, oder ist das schwachsinnig?
Merke dir am Ende der Schleife das Datum des aktuellen Datensatzes, um es im nächsten Durchlauf zum Vergleich zur Verfügung zu haben.
Und initialisiere vor dem Schleifenstart den Vergleichswert mit einem Wert, der in den Daten garantiert nicht vorkommt.
Da wüsste ich leider nicht wie ich vorgehen sollte. :( tut mir Leid, aber ich versuche es halt ein wenig.
Gruss Simon und danke für deine Antwort
Hallo!
[...]
So sollte es laufen:
$date_old = '';
$date_new = '';
while(deine dbabfrage hier) {
$date_new = db['time'];
if($date_old != $date_new) {
echo "<b>" . db['time'] . "</b>";
}
echo db['topic'] . "<br>";
$date_old = $date_new;
}
André Laugks
als erstes bringst du deinen timestamp in ein geeignetes format:
http://www.php.net/manual/en/function.date.php - die selbe funktion gibts imho auch für mysql, hab sie aber auf die schnelle nicht gefunden. hab mir sagen lassen das es besser ist wenn du das datum schon in mysql formatierst, soll wohl schneller sein.
dann diesen timestamp innerhalb deiner schleife (in welcher du die ergebnisse aus der db durchläufst) mit dem aus der vorherigen vergleichen - wenns der selbe string ist mach nix, ansonsten temp-var mit neuem wert überschreiben und datum ausgeben.
sollte etwa so aussehen
function newsticker() {
$out = "";
temptime = "";
while(deine dbabfrage hier) {
if($temptime != db['time']) {
$temptime = db['time'];
$out .= "news, ".$temptime."<br>";
}
$out .= db['topic']."<br>"."\n";
}
return $out;
}
echo newsticker();