dedlfix: Struktur und Dynamik

Beitrag lesen

echo $begrüßung;

Wie bekomme ich nun dieses while Ergebniss in das Template? [...] vielleicht ein Array, k.A.)

Ein Array mit den abgefragten Werten anlegen und dieses dem Template zwecks Darstellung (foreach $array as $element ...) zu übergeben ist eine recht einfache Möglichkeit, wenn du Datenermittlung und -ausgabe getrennt haben möchtest. Das bedeutet aber auch, dass zuerst das Array angelegt werden muss, es Speicher verbraucht, und es dann durchlaufen werden muss, um an die Werte zu kommen.

Mit etwas OOP könnte man das Problem mit einem Datenabfrageobjekt lösen. Das wäre ein Objekt, das anders als eine reine Datenbankabstraktionsschicht (DBA), etwas mehr über die Daten-/Tabellenstruktur wissen darf. In der Tat kann sich dieses Datenobjekt beim Datenbank-Handling auch einer DBA bedienen. Es liegt also zwischen Datenbank bzw. Datenbankabstraktion und den Teilen die den allgemeinen Programmablauf (1) und die Ausgabe (2) kontrollieren.
Das Datenobjekt wird in (1) initialisiert, bekommt die Parameter übergeben, die es benötigt, um die Abfrageanweisung (im Falle einer Datenbank sicherlich SELECT) zu generieren. Diese Abfrage kann sogar schon ausgeführt werden, und vermutlich benötigt (1) schon einige Ergebnisse (z.B. Anzahl der Datensätze) um weitere Dinge zu steuern. Nur das eigentlich Fetchen der Datensätze erfolgt vorläufig nicht. Wenn (1) soweit fertig ist, gibt es an (2) ab und übergibt neben den anderen berechneten Werten für das Template auch das Datenobjekt. (2) weiß, dass dieses Datenobjekt eine Methode zum Abfragen der Daten hat und ruft nun solange diese Methode auf wie Datensätze vorhanden sind. Diese Methode holt ihrerseits die Daten mittels Fetchfunktion aus der vorher bereits ermittelten Ergebnismenge ab.

Somit trennst du nicht nur Datenausgabe von Datenerzeugung sondern hast nun drei Teile: kontrollierende Logik, Datenbehandlung, Ausgabe. Man nennt dieses Programmiermuster auch MVC - Model-View-Controller. Die Models kümmern sich nicht nur um die Datenbankabfragen, vielmehr sind sie für die gesamte Geschäftslogik zuständig. Alle Arten von Berechnungen, die das eigentliche Thema betreffen, das mit dem Programm erledigt werden soll, machen die einzelnen Models. Der Controller sorgt für den allgemeinen Datenfluss. Er nimmt Daten entgegen, verteilt sie an die Models und die Views und weiß auch, wann welche von beiden aufzurufen sind. Und die Aufgabe der Views dürfte klar sein.

echo "$verabschiedung $name";