[PHP/mySQL] Gleiches while Datum nur einmal

Oli

dem Board verfallen
Gleiches while Datum nur einmal

Hallo,

So hab mir mal wieder länger überlegt wie ich das Problem darlegen kann, so das man es versteht. :) Aber weil ich mal wieder ein paar grafische Anpassungen mache muss es jetzt irgendwie funktionieren.

Also auf meiner ersten Seite wird alles schön aufgelistet mit aktuellen Artikel.
Bei den News möchte ich aber eine kleine Änderung einführen. Es hat diesmal sogar wieder was mit dem Datum zu tun :D.

Derzeit wird mit einer while Schleife alles so aus der Datenbank ausgelesen das es in etwa so aussieht:

Kategorie3 - Datum 1 - Titel1
Kategorie2 - Datum 1 - Titel2
Kategorie3 - Datum 1 - Titel3
Kategorie2 - Datum 2 - Titel4
Kategorie1 - Datum 2 - Titel5
Kategorie3 - Datum 3 - Titel6
Kategorie1 - Datum 3 - Titel7
Kategorie2 - Datum 4 - Titel8

So. Bei meiner Änderung will ich das aber anderes haben. Ich möchte nur noch einmal das Datum angezeigt bekommen für den gleichen Tag.
Soll dann so in etwa aussehen:

Datum 1
Kategorie3 - Titel1
Kategorie2 - Titel2
Kategorie3 - Titel3
Datum 2
Kategorie2 - Titel4
Kategorie1 - Titel5
Datum 3
Kategorie3 - Titel6
Kategorie1 - Titel7

Kann ich das irgendwie in PHP erzwingen das er mir gleiche Datum´s nur einmal gibt?
Ich hab´s versucht, mit if und noch mehr Schleifen. Nur komme ich da nicht ganz zu Rande mit :). Ich bleib dann immer bei der Datumsvariable hängen. Wie soll man das den sagen das er nur einmal das für den gleichen Tag gibt und das natürlich bei den anderen auch. Eventuell wichtig. Das Datum ist in der DB normaler Text. Ist aber glaube ich für die Ausgabe eh unwichtig.

Hat da jemand eine Idee? Und geht das überhaupt?
Danke im Voraus.

Ciao
 
Falls ich dich jetzt nicht falsch verstanden habe, wuerde ich dies in etwa so machen:

PHP:
<?php
//Verbindung besteht natuerlich

$sql = mysql_query("SELECT datum FROM table");
while($row = mysql_fetch_array($sql)) {
    echo $row['datum']."\n";
    $sql2 = mysql_query("SELECT kategorie, titel FROM table WHERE datum = '".$row['datum']."'");
    while($row2 = mysql_fetch_array($sql2)) {
        echo $row2['kategorie']."\n";
        echo $row2['titel']."\n";
    }
}

?>

Gibt bestimmt saubere und bessere Loesungen, aber diese ist mir auf Anhieb eingefallen.

Hoffe das gibt dir einen Denkanstoß?

Viele Grueße,
Else
 
Hi, so sollte es auch funktionieren (Else möge mir verzeihen, dass ich den code als vorlage verwendet habe; so wie ich das sehe, fehlt hier ein "group by datum"?).
so kannst dir damit 1 sql-abfrage sparen:

PHP:
<?php 
//Verbindung besteht natuerlich 
$sql = mysql_query("SELECT * FROM table order by datum desc"); 
while($row = mysql_fetch_array($sql)) { 
    if ($datum_alt <> $row['datum']) echo $row['datum'] . "\n";
    echo $row['kategorie']."\n"; 
    echo $row['titel']."\n"; 
    
    $datum_alt = $row['datum']; 
} 
?>

greets, kleffi
 
Ich werd es bald möglichst mal ausprobieren (wenigstens offline). Heute schaffe ich das wohl nicht mehr. Wollte aber trotzdem schon mal Danke sagen, das es zwei Antworten gibt. :)
Danke!

Ciao
 
Super!
Hab das zweite kleine ausprobiert. Geht!
@ Else
Nicht böse sein, aber das von kleffi ist etwas schneller gemacht, mit zwei zusätzlichen Zeilen. Dafür wusstest du es als erstes :)

So, jetzt kann ich die Startseite neu strukturieren und entschlacken. :)
 
Klar - ist doch kein Problem!

Ist mir auch nur auf Anhieb eingefallen, und ich kann mir gut vorstellen, dass meine Ideen nicht immer ressourcensparend umgesetzt sind.

Beste Grueße,
Else
 
Oben