Hi!
INSERT INTO db (fld1, fld2) VALUES (val1, val2)
==========Den unterstrichenen Ausdruck beziehe ich aus den Formularfeldern, wenn eine Checkbox ohne Häckchen dabei ist, dann hab ich einen Wert zu wenig im Ausdruck.
Wieso? Du wirst doch hoffentlich nicht irgendsowas wie implode(',',$_POST) verwenden, oder?
Sowas sollte man nicht dynamisch machen, da die POST-Variablen sich Deiner Kontrolle entziehen.
Zunächst validiere die Formulardaten (so exakt wie möglich kontrollieren ob darin das stehst was Du erwartest), und dann mache das etwas so:
$sql = "INSERT INTO db (fld1, fld2) VALUES ('".$_POST['val1']."', '".$_POST['val2']."')";
Wie geht man da vor? - Ich weiß ja nicht wieviele Checkboxen vorhanden sind und an welcher Stelle sie stehen.
Das ist ja auch vollkommen egal. Du wirst doch wohl wissen wie die Checkboxen heißen, entsprechend fomulierst Du Deine Validierungen und das Insert-Statement. Das mag Dir umständlich erscheinen, verhindert aber ne Menge potentieller Fehler und Sicherheitslücken.
Kann mir vorstellen, den "INSERT INTO"-Befehl schon korrekt auf der Formularseite aufzubauen und in einem hidden-Feld zu übergeben, hoffe aber auf etwas gescheiteres von Euch :-).
Das ist so ziemlich das dümmste was Du machen kannst. Angenommen Du schreibst in ein hidden-field "sql" Dein INSERT-Statement, und führst dann im Script direkt $_POST['sql'] aus, na dann nehme ich den editor meiner Wahl, änder das hidden field in ein Textfeld, udn gebe da mal zum Spaß "DELETE FROM tabelle", "DROP DATABASE db", "UPDATE tabelle SET fld1 = 'LUSTIGER SCHERZ'"... und man kann je nach Rchten noch viel miesere Dinge treiben.
Betrachte alles das was vom USER kommt, also alles was in GET, POST und COOKIE steht als "böse", und reduziere das was vom User kommen muss auf ein Minimum. Validiere diese Daten.
Lies mal: http://www.dclp-faq.de/q/q-formular-verarbeitung.html
Viele Grüße
Andreas