Hier werde ich das ganze jedoch objektorientiert erläutern.
Wie auch schon damals werde ich ab und zu Bilder verwenden, da der Blog HTML interpretieren will.
Datenbank
Als Datenbank wird die MySQL-Datenbank von XAMPP verwendet. Mit phpMyAdmin hat man auch gleich ein grafisches Userinterface und kann seine Datenbanken und Tabellen sehr einfach erstellen.
Wie die Beziehungen genau funktionieren, habe ich aus Zeitgründen nicht angeschaut, sondern in PHP Methoden geschrieben, in denen die Daten aus den dazugehörigen Tabellen automatisch geholt werden.
Objektorientiertes PHP
Mit PHP kann objektorientiert programmiert werden und seit PHP 5 wird es sogar richtig gut unterstützt.
Um eine Klasse verwenden zu können, muss natürlich zuerst eine erstellt werden.
Erstellen wir einmal eine Klasse namens Person:
Dazu wird eine Datei Namens Person.Class.php erstellt und folgender Inhalt eingefügt:
Class Person{
}
Wie in jeder anderen Objektorientierten Sprache, werden Objekte ebenfalls durch Variablen referenziert. Zuerst muss sie jedoch ins aktuelle PHP-File eingebunden werden:
include("Person.Class.php");
Der Parameter von include muss dabei dem Dateinamen bzw. Dateipfad der einzubindenden .php-Datei darstellen. So funktioniert es, wenn sich die beiden Dateien im selben Ordner befinden.
Ein neues Objekt mit der Klasse Person kann nun ganz einfach erstellt werden.
$person = new Person();
Eine Klasse ohne Inhalt bringt uns aber natürlich nichts. Daher können nun Klassenvariablen, Methoden und einen Konstruktor definiert werden, genau gleich wie z.B. in C#:
Variable:
public $vorname;
public $nachname;
public $alter;
Konstruktor:
public function __construct($vorname, $nachname, $alter)
{
$this->vorhname = $vorname
$this->nachname = $nachname
$this->alter = $alter
}
Methode:
Die Variablen sind wohl selbsterklärend.
Dem Konstruktor müssen nun 3 Werte mitgegeben werden.
Im Konstruktor werden diese dann an die Klassenvariablen $vorname, $nachname und $alter übergeben:
Mit $this rufe ich, wie in C# auch, das Objekt selbst auf, also die aktuelle Instanz der Klasse Person. Dieser "Pfeil" "->" ist mit dem "." in C# zu vergleichen. Damit kann man Methoden bzw. Variablen auf- bzw. abrufen.
Eine neue Instanz der Klasse Person müsste nun also so erstellt werden:
$person = new Person("Till", "Schnegg", 18);
Die Methode ist gibt einfach eine Tabelle mit den Werten des Objekts aus.
das würde dann ca. so aussehen:
Name: | Till Schnegg |
Alter: | 18 |
Um diese Methode aber auch sinnvoll nützen zu können, muss man zuerst eine Lösungsarchitektur erarbeiten. Es ist jedoch zu viel Code, um euch hier ein ganzes Beispiel zu zeigen.
Wichtig zu wissen ist jedoch, dass immer die index.php Datei gelesen wird und daher auch dessen Konstruktor als erstes ausgeführt. Dort kann man dann beginnen mit den nötigen Methodenaufrufen, um die Seite generieren zu lassen.
Objektorientierter Datenbankzugriff
Um auf eine objektorientiert auf eine Datenbank zuzugreifen, muss die mysqli-Klasse verwendet werden:
$db = @new mysqli('localhost', 'root', '', 'personenerfassung');
So greife ich auf die Datenbank "personenerfassung" auf dem localhost zu, wenn ich kein Passwort gesetzt habe.
Um zu überprüfen, ob die Verbindung erfolgreich aufgebaut wurde, kann man folgende Abfrage einfügen:
if(mysqli_connect_errno())
{
die('Fehler beim Aufbauen der Verbindung zur Datenbank: ' . mysqli_connect_error() . ' (' . mysqli_connect_errno() . ')');
}
Konnte die Verbindung hergestellt werden, kann nun eine SQL-Abfrage gemacht werden:
$result = $db->query("SELECT * FROM `person`")
Und anschliessend überprüft, ob das query korrekt ausgeführt wurde, wenn ja kann auf die Daten zugegriffen werden:
if (!$result)
{
echo ("Fehler");
}
else
{
while($row = $result->fetch_assoc())
{
echo($row["name"]);
}
}
Mit der Zeile while($row = $result->fetch_assoc()) wird durch alle aus der Datenbank geholten, in der Variable $result gespeicherten Einträge rotiert.
Das ganze Datenbank-Handling kann natürlich wieder in eine eigene Klasse geschrieben werden, wenn wir es schon objektorientiert machen wollen.
Keine Kommentare:
Kommentar veröffentlichen