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

Beitrag lesen

Hallo Matheu,

du kannst das so machen, wie Tobias das aufgeschrieben hat.

Aber tatsächlich ist dein Problem ein Musterproblem der strukturierten Programmierung: wie passt man die Programmstruktur an die Datenstruktur an. In den 70 Jahren, als man dieses Thema standardisierte, hat man Dateien gelesen. Heute liest man SQL Query-Ergebnisse. Aber im Prinzip ist es das Gleiche.

Deine Eingabe:

Queryergebnis
   Row*

Lies: Ein Queryergebnis, das Queryergebnis ist eine Iteration von Rows

Deine Ausgabe:

HTML-Segment
   Kategoriengruppe*
      Überschrift
      Inhalt
         Detailsatz*

Lies: Deine Ausgabe ist ein Stück HTML, das aus Kategoriegruppen besteht. Eine Gruppe ist eine Abfolge von Überschrift und Inhalt. Der Inhalt ist eine Iteration von Detailsätzen.

Aufgabe der strukturierten Programmierung ist, eine Programmstruktur zu finden, die gleichzeitig zu Eingabe- und Ausgabestruktur passt.

Der Trick besteht in den meisten Fällen darin, einmal vorauszulesen. Damit wirft man einen kleinen Blick in die Zukunft und weiß, wie man die Logik steuern muss.

Pseudocode: (Editiert: innere WHILE-Bedingung war falsch)

Query ausführen
Fetch auf erste Row
WHILE (row vorhanden)
   $cat = $row['cat'];
   Kategorieüberschrift schreiben
   WHILE (row vorhanden UND row['cat'] == $cat)
      Detailzeile schreiben
      Fetch auf nächste Row
   END
END

So machte man das vor 50 Jahren. Und so funktioniert das auch heute noch :)

Literatur: Michael Jackson (sic!), Principles of Program Design

en. Wikipedia über jackson-structured programming

dt. Wikipedia über Jackson-Diagramme

Das klingt heute in der Zeit von objektorientierter und funktionaler Programmierung alles so obsolet. Als ich in den 80er Jahren Programmieren lernte, habe ich als BASIC Autodidakt angefangen, und dann in der Ausbildung JSP lernen müssen und fühlte mich zuerst vera...lbert. Aber für spezifische Aufgaben, wie genau dieser hier, ist Kenntnis dieser Techniken relevant und zeitlos.

Rolf

--
sumpsi - posui - obstruxi