Tom: Verwalten von Checkboxen in einem Formular

Beitrag lesen

Hello,

3 Tables: 1 für den Benutzer (ID, Name, etc), 1 für die Gebiete (ID, Bezeichnung), 1 Zwischentable (benutzerid, gebietid)

Und die Gebiete kannst Du doch ausgeben:

Mit einem Select das Array der Gebiete sammeln

$_gebiet[idx]['ID']
               ['BEZEICHNUNG']

aus der Zwischentabelle

while ($_rec = mysql_fetch_assoc($res))
{
  $_usergebiet[$_rec['ID']] = true;
}

idx wird von (while $_gebiet[]=mysql_fetch_assoc($res)) durchgezählt.

Dann kannst Du doch die möglichen Gebiete im Formular ausgeben:

if (is_array($_gebiet))
  foreach($_gebiet as $key => $_val)
  {
    $checked = '';
    if (isset($usergebiet[$_val['ID']]
    {
      $checked = ' checked="checked"';
    }
    $ckeck .= "<p class="check"><input type="checkbox"\n".
              "                          name="check[gebiete][{$_val['ID']}]"\n".
              "                          value="{$_val['ID']}$checked"\n".
              ">{$_val['BEZEICHNUNG']}</p>\n";
  }

und an der entsprechnden Stelle kannst Du nachher $check ausgeben

Im Post-Script kommt das dann so an:

$_POST['check']]'gebiete'][<ID>] == <ID>        wobei <ID> für den Wert der ID steht

Abfragen kannst Du das dann so:

if (is_array($_POST['check']]['gebiete']))
  foreach ($_POST['check']]'gebiete'] as $key => $val)
  {
    if($key = $val)
    {
      $values .= ' .....   # Aufbau der Values für das Insert in die Zwischentabelle
    }
  }

Je nachdem, wie kritisch das System ist, muss man natürlich noch einen Respinse/Request-Vergleich durchführen. Das bedeutet, dass alle Daten, die an das Formular augegeben werden, in die Session geschrieben werden und vom User nur Daten ausgewählt werden können, die in der Session stehen, also ihm zur Auswahl angeboten worden sind.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau