Hauptmenü

Untermenü

Advanced SQL - Praxistutorial 2 - Angebote von mir zurückziehen

1. Die Abschnitte

2. Die Vorgehensweise

... ist ja schon aus dem Formular ersichtlich. Wir markieren eines oder mehrere unserer Angebote und klicken dann auf den submit-Button. Der entsprechende Parameter für die Übergabe der Aktion steckt wie gehabt im hidden-Feld namens do.

3. Die Methode cancelOffer

... gehört natürlich wieder in die Klasse Market. Und so wahnsinnig groß ist sie nun auch nicht.


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);
}

Erläuterung

Die Vorgehensweise ist praktisch identisch mit der aus dem vorherigen Kapitel. Nur arbeiten wir diesmal mit dem Fragezeichen als Platzhalter. Und übergeben entsprechende des SQL-Statements nur einen Parameter. Wegen Letzterem wird dann auch nur ein stinknormales numerisches Array erzeugt, das wiederum ein Array mit drei Werten enthält.

Der erste (die hardcodiert 1) steht für die Nummer des Platzhalters innerhalb des Queriers. Und da wir nur einen haben, können wir hier so vorgehen. Auch wenn es nicht die feine englische Art ist. Der zweite Wert steht für die übermittelten POST-Werte aus den Checkboxen und der dritte beinhaltet den Typ, also INT.

4. Die Methode deleteWithBind

... ist auch ziemlicher Pillepups. Anstelle von bindParam arbeiten wir hier mit bindValue, damit ihr die Methode auch mal kennen lernt.


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();
  }
}

Erläuterung

Das Prinzip ist fast dasselbe wie in der Methode selectWithBind aus dem vorherigen Abschnitt. Der einzige Unterschied besteht darin, dass wir bei bindParam nur einen Datensatz mit mehreren Parametern suchen, somit auch das execute nach der Schleife ausführen, während hier mehrere Datensätze mit einem Parameter gelöscht werden sollen. Darum muss die Ausführung per execute auch in der Schleife geschehen.

bindParam versus bindValue

Zu dem Thema werde ich am Ende dieses Tutorials noch ein paar Worte sagen. Bis dahin müsst ihr euch ein wenig in Geduld üben.

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