Hi,
Das schaut im Quelltext dann so aus:
<input type='checkbox' name='extra_1' value='1' >1. Bezeichnung<br>
<input type='checkbox' name='extra_2' value='2' >2. Bezeichnung<br>
<input type='checkbox' name='extra_3' value='3' >3. Bezeichnung<br>
<input type='checkbox' name='extra_4' value='4' >4. Bezeichnung<br>
....
bei diesem Vorgehen wirst du nach Abschicken des Formulars eine oder mehrere Variablen der Form
$_POST['extra_n']
erhalten, wobei n eine Zahl von 1 bis Anzahl der Checkboxen darstellt. Die nicht angeklickten Checkboxen werden dabei nicht übertragen, die Variablen existieren also nicht.
Mein bisheriger Lösungsversuch:
$i = 1;
while($i <= $max_id){
$extra = "$extra_".$i;
if ($extra > 0){
$result = mysql_query ( INSERT ... );
}
$i++;
}
hier gehst du davon aus, die Variablen würden $extra_n heißen, was nur bei der Einstellung register_globals=on stimmen würde und nicht empfehlenswert ist (siehe http://www.php-faq.de/q/q-formular-register-globals.html). Außerdem baut man dynamische Variablen nicht so
$extra = "$extra_".$i;
zusammen, sondern z.B. so:
$extra = ${'extra_' . $i};
denn im ersten Fall verknüpfst du lediglich den Inhalt der Variablen $extra_ (nicht existent) mit dem Inhalt von $i (1 bis n), erhälst also eine Warning, dass $extra_ nicht definiert ist und in $extra stünde lediglich der Inhalt von $i. Schau dir erstmal an, wie das Array $_POST nach dem Abschicken aussieht, z.B. mit
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
exit;
?>
dann wirst du sehen, dass lediglich die Werte definiert sind, deren Checkbox du angeklickt hast, z.B.:
Array
(
[extra1] => 1
[extra3] => 3
)
um das abzufragen, kannst du in der Schleife die Funktion isset() benutzen (http://www.php.net/manual/en/function.isset.php):
if (isset($_POST['extra_' . $i])) {
// mach was
}
Gruß,
Andreas.