Hauptmenü

Untermenü

Advanced SQL - Praxistutorial 2 - Angebote an mich anzeigen

1. Die Abschnitte

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(=> 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