derdicki: Brauche Idee, für Titel Ausgabe bei einer SELECT abfrage, Ausgabe, gruppierte Var, dann Titel

Beitrag lesen

Hallihallo!

Wenn ich praktisch eine Ausgabe einer kompletten CAT in einem DIV ausgeben will,muss ich dieses ja öffnen und wieder schliessen.

Da gibt es mehrere Möglichkeiten. Einfach nachzurüsten wäre zum Beispiel:

$lastCat = 0;
while ($ds =) {
   if ($ds['cat'] != $lastCat) {
     if ($lastCat != 0) echo '</div>'; # Schliessen des vorherigen DIV
        echo'<div>'; # Öffnen des DIV
   }// andere normale Ausgaben
   $lastCat = $ds['cat'];
}

Man kann aber auch, wie Rolf schon vorgeschlagen hatte, erstmal alle Datensätze in einem geeigneten Container sammeln, dann weitere Berechnungen (falls nötig) durchführen, und erst am Ende ausgeben. Das wäre dann das EVA- Prinzip, was in Hinsicht auf eventuelle spätere Erweiterungen auf jeden Fall das Praktikabelste wäre:

// erstmal alle Daten sammeln.
// da ich jetzt schon weiss, dass ich nach Kategorien gruppiert ausgeben will, bereite ich das hier schon entsprechend vor:
$container = array();
while ($ds =) {
   if (!is_array($container[$ds['cat'])) $container[$ds['cat']] = array();
   $datensatz = $ds;
   // hier kann man mit $datensatz noch andere Sachen anstellen, falls noch
   // etwas berechnet werden soll.$container[$ds['cat']][] = $datensatz;
}

// Ausgabe:
foreach ($container as $cat => $datensaetze) {
   echo '<h2>'.$cat.'</h2>'; #oder sowas wie catname($cat) als Funktion, oder oder oder
   echo '<div>';
   foreach ($datensaetze as $datensatz) {
      echo htmlspecialchars($datensatz['name']);
      // und was sonst noch so ausgegeben werden soll
   }
   echo '</div>'; # Hier ist die Kategorie zu Ende
}

Man sollte eigentlich auch den Namen der Kategorie mit in den Container basteln, dann könnte man nämlich den $container zum Beispiel an eine Template-Engine übergeben, die sich dann autark um die Ausgabe kümmert.

Ich hoffe, damit konnte ich Dir helfen.

Beste Grüsse, Tobias Hahner