Menü

PHP Datenbankverbindung

Seite 2
zurück zu Seite 1

Wem so viel Hokuspokus unheimlich ist, der kann auch Controller, Models und Views einzeln generieren lassen. Dazu dient dann direkt der Befehl für das zu erstellende Element, also beispielsweise controller für einen Controller, model für ein Model usw. Dahinter können Sie dann noch Definitionen vornehmen, welche Actions im Controller vorkommen und welche Eigenschaften ein Model hat. Einen Überblick finden Sie hier .

Datenbankverbindung

Als Beispiel verwenden wir eine sehr einfache Datenbank mit vier Feldern, die eine Liste mit Artikeln enthält. Die Datenbank hat den Namen fuel, alternativ kann sie natürlich zum Beispiel auch einen vom Hosting-System vorgegebenen Namen erhalten. Wichtig ist nur, dass die Datenbank articles heißt, damit die automatische Zuordnung klappt. Hier der SQL-Dump:

CREATE TABLE `articles` ( `id int(11) NOT NULL, `author` varchar(150) NOT NULL, `topic` varchar(255) NOT NULL, `text` longtext NOT NULL, PRIMARY KEY (`uid`) )

Sie benötigen nun den Namen der Datenbank und die Zugangsdaten für die Datenbankkonfiguration. Sie ist auf mehrere Dateien verteilt. Unter fuel/app/config/db.php finden Sie die zentrale Konfiguration für Zeichensatz, Zugriffstyp usw. Für den Zugriff verwendet FuelPHP aktuell die PDO als Abstrahierungsschicht. An einer neuen Version der internen Datenbankfunktionen wird allerdings gerade auch gearbeitet.

Die eigentlichen Zugangsdaten landen in den zwei db.php-Dateien in den Unterverzeichnissen fuel/app/config/development/ und fuel/app/config/production/. Dies ist recht praktisch, wenn Sie für Entwicklungs- und Live-Umgebung jeweils andere Datenbestände verwenden - was in der Praxis außer vor dem ersten Live-Gehen sicherlich meistens der Fall ist. Die Datenbankeinstellungen in der db.php sind einfach in einem Array abgelegt:

return array( 'default' => array( 'connection' => array( 'dsn' => 'mysql:host= localhost;dbname=fuel', 'username' => 'root', 'password' => '', ), ), );

Anpassen müssen Sie host und dbname sowie natürlich Nutzername und Passwort. Die obige Konfiguration ist für eine Standard-Xampp-Installation geeignet, in der Sie die Datenbank fuel genannt haben.

Nun geht es in den Code

Zuerst werfen wir einen Blick ins Model. Hier ist nur der Tabellenname hinterlegt. Den könnten Sie an dieser Stelle auch ändern:

<?php namespace Model; use \Model_Crud; class Article extends Model_Crud { protected static $_table_name = 'articles'; }

FuelPHP benötigt unter anderem deswegen PHP 5.3, weil es Namespaces einsetzt. Nun zu den Stellen, wo Sie Änderungen vornehmen müssen. Würden Sie die Articles-Übersicht aktuell aufrufen, erhielten Sie die Fehlermeldung, dass die Eigenschaft name nicht vorhanden ist. Das ist richtig, da unsere Datenbank keine entsprechende Spalte enthält.

Deswegen gehen Sie in fuel/app/views/articles/ und editieren dort index.php. Hier ersetzen Sie nun name durch topic und fügen die übrigen Eigenschaften als Spalten ein:

<h2 class="first">Artikelliste</h2> <?php if ($articles): ?> <table cellspacing="0" border="1"> <tr> <th>Thema</th> <th>Autor</th> <th></th> </tr> <?php foreach ($articles as $article): ?> <tr> <td><?php echo $article-> topic; ?></td> <td><?php echo $article-> author; ?></td> <td> <?php echo Html::anchor ('articles/view/'.$article->id, 'Ansehen'); ?> | <?php echo Html::anchor ('articles/edit/'.$article->id, 'Bearbeiten'); ?> | <?php echo Html::anchor ('articles/delete/'.$article->id, 'Loeschen', array('onclick' => "return confirm('Sind Sie sicher?') ")); ?> </td> </tr> <?php endforeach; ?></table> <?php else: ?> <p>Keine Artikel vorhanden.</p> <?php endif; ?> <br /> <?php echo Html::anchor('articles/ create', 'Neuen Artikel anlegen'); ?>

Die englischen Begriffe können Sie auch übersetzen

Nun müssen Sie noch in die anderen Views edit, create und view gehen und auch dort die Eigenschaften ändern. In view geben wir beispielsweise noch die Beschreibung aus:

<h2> <strong>Thema:</strong> <?php echo $article->topic; ?></h2> <p><?php echo $article->text; ?> </p> <?php echo Html::anchor('articles/ edit/'.$article->id, 'Bearbeiten'); ?> | <?php echo Html::anchor('articles', 'Zurueck'); ?>

Nun folgen die Formulare zum Bearbeiten beziehungsweise Neuerstellen. Da beide gleich aufgebaut sind, wird von beiden dasselbe Formular verwendet, nämlich _form.php. Hier müssen Sie alle neuen Felder, die bearbeitbar sein sollen, ergänzen:

<?php echo Form::open(); ?> <p><?php echo Form::label('Thema', 'topic'); ?> <?php echo Form::input('topic', Input::post('topic', isset($article) ? $article->topic : '')); ?> </p> <p> <?php echo Form::label('Autor', 'author'); ?> <?php echo Form::input('author', Input::post('author', isset($article) ? $article->author : '')); ?> </p> <p> <?php echo Form::label('Text', 'text'); ?> <?php echo Form::textarea('text', Input::post('author', isset($article) ? $article->text : '')); ?> </p> <div class="actions"> <?php echo Form::submit('submit', 'Speichern'); ?> </div> <?php echo Form::close(); ?>

Damit diese Werte nun auch in der Datenbank ankommen, müssen Sie noch einmal in den Controller (fuel/app/classes/controller/articles.php) und dort dafür sorgen, dass sie von den zwei Methoden create und edit auch abgefangen werden. Dazu gehen Sie in die action_create()-Methode und ergänzen im Array die neuen Felder:

$article = Article::forge(array( 'topic' => Input::post('topic'), 'author' => Input::post('author'), 'text' => Input::post('text'), ));

In action_edit ergänzen Sie das Schreiben der drei Eigenschaften:

$article->topic = Input::post ('topic'); $article->author = Input::post ('author'); $article->text = Input::post('text');

Fertig ist eine einfache editierbare Artikeldatenbank.

Fazit

Natürlich ist FuelPHP noch ziemlich neu und nicht gerade mit vielen Referenzprojekten ausgestattet. Das heißt auch, dass die Zahl der Funktionalitäten stark begrenzt ist. Dennoch zeigt FuelPHP sehr spannende Ansätze und ist gut durchdacht. Beim bisher kurzen Entwicklungszeitraum von sechs Monaten ist hier eine klare Handschrift zu erkennen. Einen guten Ausblick erlaubt die Roadmap, die zeigt, dass das Projekt noch spannende Pläne hat und ständig aktiv ist. Es lohnt also durchaus, ein wenig Benzin zu schnuppern.

 
Whitepaper Lexware-Logo
Mindestlohn Das müssen Sie als Arbeitgeber prüfen.
Mindestlohn und Praktikanten Antworten zu häufig gestellten Fragen.
x