Hauptmenü

Untermenü

Advanced SQL - Praxistutorial 2 - Angebote an mich ablehnen

1. Die Abschnitte

2. Die Sache mit den zwei submit-Buttons

Ich wurde schon mehrfach gefragt, wie man so was einbauen kann und darum hole ich das jetzt endlich nach. Besser spät als nie. Also, wir haben zwei submit-Buttons mit demselben Namen und unterschiedlichen Werten (value). Und darüber steuern wir die weiteren Aktionen.


else if ('myoffers' == $_POST['do']) {
  if ('Ablehnen' == $_POST['action']) {
    $market -> cancelOffer();
  }
  else if ('Annehmen' == $_POST['action']) {
    $market -> acceptOffer();
  }
}

Aber!

Wie ich schon sagte, ist das eine sehr unvorteilhafte Umsetzung. Denn sobald sich die Beschriftung ändert, muss die Bedingung angepasst werden. Und das kann man sehr schnell vergessen. Ein Tipp: gebt den Buttons unterschiedliche Namen wie zum Beispiel decline und accept. Dann könnt ihr zum Beispiel sauber über ein isset($_POST['decline']) prüfen.

3. Die Methode cancelOffer

... ist nichts Weltbewegendes. Wir bauen ein eigenes Array aus den Werten von $_POST['id'] auf, das von Aufbau her praktisch identisch ist mit dem aus den Methoden, wo wir Daten per selectWithBind holen. Als Platzhalter arbeiten wir wieder mit dem Fragezeichen.


public function cancelOffer() {
  $query  'DELETE FROM angebot WHERE id = ?';
  $params = array();
  for ($i 0$i count($_POST['id']); $i++) {
    $params[] = array(1$_POST['id'][$i], PDO::PARAM_INT);
  }   
  $result $this -> db -> deleteWithBind($query$params);
}

4. Die Methode deleteWithBind

... kennen wir ja schon.


public function deleteWithBind($query$params) {
  $stmt  $this -> prepare($query);
  for ($i 0$i count($params); $i++) {
    $stmt -> bindValue($params[$i][0], $params[$i][1], $params[$i][2]);
    $stmt -> execute();
  }
}

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