Advanced SQL - Praxistutorial 1 - Die grundsätzliche Vorgehensweise
1. Die Abschnitte
- Vorwort
- Die Datenbank-Klasse
- Verbindungsaufbau
- Login
- Die grundsätzliche Vorgehensweise
- Die Übersichtsliste
- Mitglied auf dem Marktplatz anzeigen
- Mitglied anbieten Teil 1
- Mitglied anbieten Teil 2
- Direktangebot machen Teil 1
- Direktangebot machen Teil 2
- Tauschangebot machen Teil 1
- Tauschangebot machen Teil 2
- Tauschangebot machen Teil 3
2. Das Prinzip
Bei den folgenden Abschnitten arbeiten wir mit zwei Klassen. Auch wenn die den Namen eigentlich nicht verdienen. aber darauf habe ich ja schon zu
Beginn hingewiesen. Dabei handelt es sich um Market
und Player
. Erstere ist für alle Dinge
zuständig, die in irgendeiner Form was mit einem Tausch zu tun haben. Die zweite "Klasse" dagegen kümmert sich um alles, was Spieler betrifft.
Ach ja, wo ihr was in welche Datei schreibt, sollte euch mittlerweile geläufig sein. Dazu äußere ich mich nicht mehr. Zumal die Dateien eh schon existieren.
3. Die Steuerung
... läuft in diesem Fall über GET
-Parameter für die Anzeige und POST
-Parameter für die Aktionen. Zunächst erzeugen wir unterhalb des Logins
in der index.php
zwei Objekte aus den Klassen Market
und Player
.
$player = new Player($db);
$market = new Market($db);
Danach nutzen wir dann die entsprechenden Methoden dieser "Klassen" anhand entsprechender Werte. Die Details dazu kommen später, hier stelle ich erst mal
nur alle vor. Ach ja, der folgende Code kommt natürlich unter obigen in der index.php
.
Die Klassen
... müssen dementsprechend über einen Konstruktor verfügen. Denn wir speichern die Referenz auf die Datenbankklasse in einer eigenen Eigenschaft ab. Diese Vorgehensweise kann unter Umständen zu einem seltsamen Verhalten führen, aber dazu werde ich mich in einem späteren Tutorial äußern. Außerdem betrifft uns das hier nicht.
// class/Player.class.php
class Player {
private $db = null;
public function __construct($db) {
$this -> db = $db;
}
}
// class/Market.class.php
class Market {
private $db = null;
public function __construct($db) {
$this -> db = $db;
}
}
4. Die Aktionen
Hier greifen wir auf drei Methoden der Market
-Klasse zu. putOnMarket
, um Spieler auf dem Marktplatz anzubieten, doDirectOffer
für ein Direkt- und doSwapOffer
für ein Tauschangebot.
if ('sell' == $_POST['do']) {
$market -> putOnMarket();
}
else if ('buy' == $_POST['do']) {
$market -> doDirectOffer();
}
else if ('swap' == $_POST['do']) {
$market -> doSwapOffer();
}
5. Die Darstellung
Dafür benötigen wir insgesamt fünf Methoden. Eine aus der Market
-"Klasse" und vier aus Player
.
showPlayersOnMarket
zeigt alle Spieler auf dem Marktplatz an.getAllPlayersForSell
zeigt alle eigenen Spieler an, um sie auf dem Marktplatz anzubieten.getGildPlayersForOffer
zeigt alle Spieler an, die nicht zur eigenen Gilde gehören.getGildPlayersForSwap
zeigt die eigenen Spieler und die einer anderen Gilde, um sie zu tauschen.getAllPlayers
listet alle Spieler der einzelnen Gilden auf.
switch($_GET['do']) {
case 'market' : $html = $market -> showPlayersOnMarket();
break;
case 'sell' : $html = $player -> getAllPlayersForSell();
break;
case 'offer' : $html = $player -> getGildPlayersForOffer();
break;
case 'swap' : $html = $player -> getGildPlayersForSwap();
break;
default : $html = $player -> getAllPlayers();
}
Der Rückgabewert
Jede dieser Methoden liefert fertigen HTML-Code zurück. OK, das ist völliger Tinnef, aber dazu habe ich mich hier ja schon zig Mal geäußert. Sei's drum, der wird dann ganz weit unten einfach ausgegeben.
<div class="content">
<?php echo $html; ?>
</div>
6. Und die Logik dahinter?
Na ja, mit Logik hat das nicht sehr viel zu tun. Da wir uns hier aber auf PDO und fortgeschrittene SQL-Techniken konzentrieren, spielt das keine Rolle. Und immer an den dicken Hinweis denken.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt