Leichtgewichtigkeit mit Performanceboost

Teil 4: Serie: PHP-Frameworks Teil 5 - Code Igniter

Alternativ zum händischen Weg können Sie auch die Tabellenbibliothek von Code Igniter verwenden. Sie generiert aus einem Datenbankergebnis automatisch eine entsprechende HTML-Tabelle.

<html><head><title>PHP-Frameworks</title></head><body><h1><?php echo $ueberschrift;
?></h1><?php
echo $this->table->generate
($liste);
?></body></html>

Wie Sie die Tabelle beeinflussen können, lesen Sie unter in der Referenz.

Zurück zur Datenabfrage. get() wird in eine einfache SELECT-Abfrage umgewandelt. Die Methode besitzt zwei weitere optionale Parameter. Der erste gibt das LIMIT an, sprich die Menge der Einträge, die geliefert werden. Der zweite Parameter steht für das OFFSET, also das Element, ab dem das Resultat startet.

Mit get_where() haben Sie zusätzlich die Möglichkeit, als Parameter einen Array mit allen gewünschten WHERE-Parametern anzufügen. So fragen Sie beispielsweise nur die Frameworks mit einer bestimmten Lizenz ab:

$data['liste'] = $this->db->
get_where('frameworks', array('licence_id' => 4));

Auch die Einzelteile der Abfrage lassen sich steuern. Die WHERE-Anweisung erstellen Sie alternativ mit der Methode where(), die vor get() ausgeführt werden muss. Über select() legen Sie fest, welche Felder abgefragt werden oder Sie schreiben Ihre SELECT-Abfrage komplett selbst. Nach dem Festlegen führen Sie die Abfrage dann mit get() aus.

Mit den folgenden Zeilen landet beispielsweise die ID nicht mit im Resultat, da nur die zwei Felder name und licence_id abgefragt werden:

$this->db->select('name, licence_
id');
$data['liste'] = $this->db->get
('frameworks');

Auf dieselbe Art funktionieren auch die Methoden select_min(), select_max(), select_avg() und select_sum(), nur dass sie zusätzlich die jeweils im Namen enthaltene SQL-Funktion in das SQL-Statement einbauen. Mit from() können Sie sogar die abgefragte Tabelle angeben. Diese dürfen Sie dann bei get() weglassen.

PHP-Frameworks Teil V - Code Igniter

© Archiv

Fertig: die Ausgabe mit Framework-Name und Lizenz.

Übrigens, nach jeder Abfrage werden die von anderen Methoden wie select() oder from() festgelegten Angaben wieder gelöscht. Dieses System über eigene Methoden klappt natürlich nicht nur für die Abfrage, sondern auch für das Aktualisieren (update()), Löschen (delete()) und Einfügen (insert()) von Daten. Für unsere Beispieltabelle interessiert natürlich auch die Relation zur Tabelle licences. Sie lässt sich über einen JOIN auflösen, für den die Methode join() zuständig ist. Sie erhält als Parameter die betroffene Tabelle und anschließend die Bedingungen.

Dazu legen Sie am Anfang fest, welche Felder abgefragt werden sollen. In diesem Fall sind das nur die Namensfelder. Vorsicht ist bei gleichen Spaltennamen in verschiedenen Tabellen geboten.

Denn diese werden im resultierenden Datenbankergebnis nicht korrekt übernommen. In unserem JOIN muss die Lizenz-ID in der frameworks-Tabelle mit der in der licences-Tabelle übereinstimmen.

$this->db->select('frameworks.
name, licences.licence_name');
$this->db->join('licences',
'frameworks.licence_id = licences.id');
$data['liste'] = $this->
db->get('frameworks');

Auch die Ausgabe hat noch eine kleine Verschönerung verdient. Die HTML-Tabelle erhält eigene Header-Namen.

Dazu wechseln Sie in die View und setzen dort mit der Methode set_heading() die zwei Bezeichnungen für die Spaltenüberschriften:

$this->table->set_heading
('Framework', 'Lizenz');
echo $this->table->generate($liste);

Fazit

Die Abwärtskompatibilität mit PHP 4 und die eigene - und etwas eigenartige - Lizenz sind sicherlich die größten Nachteile von Code Igniter.

Dem gegenüber steht eine dank des pragmatischen Ansatzes sehr gute MVC-Umsetzung und ein insgesamt sehr performantes Framework. Die auf Active-Records bestehende Datenbankschnittstelle ist sehr funktional aufgebaut und nimmt, wenn man das denn möchte, die SQL-Handarbeit weitgehend ab.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".