Simon: Datum nur einmal ausgeben wenn mehrmals vorhanden.

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

  1. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. 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

      1. 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

        --
        Die Frau geht, die Hilti bleibt!
  2. 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();