Hauptmenü

Untermenü

Advanced SQL - Praxistutorial 2 - Angebote an mich annehmen Teil 1

1. Die Abschnitte

2. Was jetzt kommt

... habe ich euch vom Prinzip her schon im ersten Praxistutorial gezeigt. Hier wird es allerdings etwas komplizierter, da wir uns auf jeden Fall zumindest teilweise selber um die Datenintegrität kümmern müssen. Also auf was müssen wir achten, wenn wir ein oder sogar mehrere Angebot in einem Rutsch annehmen.

Das gilt für alle(!) Angebote, die ein Gildenmeister annimmt. Und wie es in der Natur der Sache liegt, muss das nach dem Prinzip "Alles-oder-nichts" geschehen, da sonst die Daten nicht mehr in Ordnung sind. Man stelle sich nur mal das Geschrei der Zocker vor, wenn bei ihrer(!) Gilde die Einnahmen falsch sind. So was kann echte Kriege auslösen!

3. Die Methode acceptOffer

... sieht vom Grundaufbau daher so aus.


public function acceptOffer() {
  $querries = array();
  for ($i 0$i count($_POST['id']); $i++) {
    $querries[] = [query1];
    $querries[] = [query2];
    $querries[] = [query3];
  }
  if (!empty($querries)) {
    $this -> db -> transact($querries);
  }
}

Hinweis

Die [query1-3] sind nur Platzhalter für die konkreten SQL-Statements. Da die (teilweise) ein wenig kompliziert sind, gehe ich darauf erst im nächsten Abschnitt ein.

4. Die Methode transact

... kennt ihr ja schon aus dem ersten Praxistutorial. Ich liste sie nur der Vollständigkeit halber noch mal auf. Das Prinzip von Transaktionen sollte euch mittlerweile bekannt sein.


public function transact($queries) {
  $success true;
  $this -> beginTransaction();
  foreach ($queries as $key => $value) {
    if (!$this  -> change($value)) {
      $success false;
      break;
    }
  }
  if (false === $success)  {
    $this -> rollBack();
    return false;
  }
  else {
    $this -> commit();
    return true;
  }
}

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt