Hauptmenü

Untermenü

Advanced SQL - Praxistutorial 3 - Tauschangebote annehmen Teil 2

1. Die Abschnitte

2. Die Methode acceptOffer

... baut sich ganz einfach auf. Denn wir arbeiten alle Angebote Stück für Stück ab. Mit der Methode getSwapOfferDetails holen wir uns zunächst die notwendigen Infos des jeweiligen Angebots.


private function acceptOffer() {
  for ($i 0$i count($_POST['accept']); $i++) {
    $offerinfo $this -> getSwapOfferDetails($_POST['accept'][$i]);
  }
}

3. Angebotsinfos ziehen

Das sollte nun wirklich kein Problem mehr für euch sein. Und dementsprechend pupsig ist auch der Code. Wir holen uns also pro Angebot alle betroffenen Spieler.


private function getSwapOfferDetails($id) {
  $query 'SELECT
              a.id,
              a.preis,
              t.mitglied,
              t.typ,
              g1.id AS gildevon,
              g2.id AS gildean
            FROM
              angebot a
            LEFT JOIN
              tausch t ON (t.angebot = a.id)
            INNER JOIN
              mitglied m1 ON (m1.id = a.von)
            INNER JOIN
              gilde g1 ON (g1.id = m1.gilde)
            INNER JOIN
              mitglied m2 ON (m2.id = a.an)
            INNER JOIN
              gilde g2 ON (g2.id = m2.gilde)
            WHERE a.id = '.$id;
  $offer $this -> db -> selectMultiple($query);
  return $offer;
}

4. Angebote löschen


$offerinfo $this -> getSwapOfferDetails($_POST['accept'][$i]);
foreach($offerinfo as $value) {
  $players[] = $value['mitglied'];
}
if ($offerinfo) {
  $query 'DELETE FROM angebot WHERE id = '.$_POST['accept'][$i];
  $num   $this -> db -> change($query); 
}
if (!$offerinfo || !$num) {
  $error[] = 'Angebot mit der ID '.$_POST['accept'][$i].' kann nicht mehr angenommen werden'; 
}

Erläuterung

Hierzu muss ich euch das eine oder andere kundtun. Zunächst mal sammeln wir alle betroffenen Spieler im Array §players. Das benötigen später noch. Dann prüfen wir mir if ($offerinfo), ob das Angebot überhaupt existiert. Wenn dem so ist, dann wird es gelöscht. Als Rückgabewert sollten wir hier immer eine 1 zurückbekommen. Wenn in beiden Fällen nichts mehr da sein sollte, so ist schon jemand zuvorgekommen. Dann sammeln wir die Fehlermeldungen pro Angebot im Array $error.

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