Advanced SQL - Praxistutorial 2 - Angebote an mich anzeigen
1. Die Abschnitte
- Vorwort
- Übersicht
- Angebote von mir anzeigen
- Angebote von mir zurückziehen
- Angebote von mir ändern
- Angebote an mich anzeigen
- Angebote an mich ablehnen
- Angebote an mich annehmen Teil 1
- Angebote an mich annehmen Teil 2
- Ein paar Hinweise
2. Die Methode
... für diesen Fall schimpft sich getOffersToMe
und ist von Prinzip her nichts Neues. Denn wir arbeiten mal wieder mit einer Bindung so wie im
Abschnitt "Angebote von mir anzeigen", nur ein wenig anders. Denn sonst wäre das hier komplett verschwendete Zeit.
3. Der Query
Im Gegensatz zum erwähnten Beispiel nehmen wir diesmal keinen konkreten Platzhalter sondern das allgemeine ?
. Mehr nicht.
$query = 'SELECT
a.id,
m1.name AS von,
m2.name AS fuer,
m1.gilde,
a.preis
FROM
angebot a
INNER JOIN
mitglied m1 ON a.von = m1.id
INNER JOIN
mitglied m2 ON a.fuer = m2.id
WHERE a.an = ?';
4. Aufbereiten und Daten holen
Da wir auf die schon existierende Methode selectWithBind
zurückgreifen, muss das Array entsprechend aufgebaut sein. Der einzige Unterschied
zur Methode getMyOffers
ist, dass wir anstelle des assoziativen Indexes einen numerischen nehmen, also die 1
. Denn die entspricht später
dem Fragezeichen.
$params = array(1 => array($_SESSION['login'], PDO::PARAM_INT));
$result = $this -> db -> selectWithBind($query, $params);
Falls sich einer schwach erinnert, so etwas haben wir auch schon in der Methode cancelOffer
gemacht.
5. Die Ausgabe
$html = '<form action="index.php" method="post">
<table cellspacing="0" cellpadding="0">
<tr>
<th></th>
<th>Von</th>
<th>Für</th>
<th>Gold</th>
</tr>';
for ($i = 0; $i < count($result); $i++) {
$html .= '<tr>
<td>
<input type="checkbox" name="id['.$i.']"
value="'.$result[$i]['id'].'" />
<input type="hidden" name="gilde['.$i.']"
value="'.$result[$i]['gilde'].'" />
</td>
<td>'.$result[$i]['von'].'</td>
<td>'.$result[$i]['fuer'].'</td>
<td>'.$result[$i]['preis'].'</td>
</tr>';
}
$html .= '<tr>
<td colspan="5">
<input type="hidden" name="do" value="myoffers" />
<input type="submit" name="action" value="Ablehnen" />
<input type="submit" name="action" value="Annehmen" />
</td>
</tr></table></form>';
return $html;
Dazu nur zwei Anmerkung. Es gibt diesmal zwei submit
-Buttons mit identischen Namen und unterschiedlichen Werten. Letztere benötigen wir gleich
für eine Unterscheidung, auch wenn die äußerst problematisch ist. Aber ihr wollt ja sicher aus Fehlern lernen. Außerdem ist noch wichtig, dass in den
hidden
-Feldern in der Schleife die IDs der Gilde stehen, von denen die jeweiligen Angebot kamen.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt