mehrere Checkboxen behandeln in If Funktion
Markus
- asp.net
0 small-step0 Markus0 netghost0 small-step
0 netghost
Hi Leute!
Habe in einem Formular mehrere Checkboxen zum anklicken.. die den wert "true" liefern wenn sie angeklickt werden..
Dieser werd wird dann in eine Access-DB Spalte übertragen wird mit dem Feldtyp Ja/Nein.
mit:
<input type="checkbox" name="Garage" value="true">Garage
<input type="checkbox" name="Balkon" value="true">Balkon
und in die DB:
rs("Garage") = Request.Form("Garage")
rs("Balkon") = Request.Form("Balkon")
Funktioniert soweit gut soweit etwas angeklickt wird...
Wenn ich nichts anklicke kommt dann eine Fehlermeldung bei der Übertragung in das Feld..
Habe es jetzt zb für Garage so gelöst:
If Request.Form("Garage") = "true" then
rs("Garage") = Request.Form("Garage")
End if
Geht auch!
Wie baue ich nun in diese If Funktion mehrere Request Forms ein ohne für jedes einzelne Feld eine eigene If Funktion zu schreiben handelt sich um 6 andere Felder?
Wie realisiere ich das am besten (da ja jedes Feld unabhängig angeklickt werden kann)?
Danke
MFG
Markus
Hi!
Wie baue ich nun in diese If Funktion mehrere Request Forms ein ohne für jedes einzelne Feld eine eigene If Funktion zu schreiben handelt sich um 6 andere Felder?
hm... ich mag ASP nicht sonderlich, aber... unter PHP würde ich es so lösen:
Ich würde den Wert aller Checkboxen in ein Array schreiben (mit <input type="checkbox" name="checkbox[name]"... />) und ihn vom script anschließend in einer schleife wieder auslesen. Übergib als Key einfach den Namen der DB-Spalte, sollte ja kein Problem sein...
Gruß,
small-step
Hi
Arbeite aber leider nicht mit PHP und weiß leider nicht wie das in ASP aussehen könnte:
Habs mal mit If u else-if probiert:
If Request.Form("Garage") = "true" then
rs("Garage") = Request.Form("Garage")
Else If
Request.Form("Balkon") = "true" then
rs("Balkon") = Request.Form("Balkon")
End if
Geht aber leider nicht...
MFG
Markus
Hi Markus,
nein else if geht nicht, da es ja nur prüft wenn erste bedingung nicht erfüllt ist, die checkboxen sind aber unabhängig von einander. Du musst es entweder mittels array machen, wobei ich die methode nicht so gut finde oder du instanzierst wie ich gesagt habe ein neues objekt, dessen items du werte zuordnen kannst. Dann wandelst du das gesamte request.form objekt in das neue objekt um.
for each item in request.form
eignet sich sehr gut dazu eins zu eins die objekt struktur zu übernehmen.
Gruß
Netghost
Hi
Danke für deine Hilfe
Weiß aber leider nicht praktisch wie ich da beginnen sollte?
Wäre über eine praktische Hilfer sehr dankbar...
for each item in request.form
eignet sich sehr gut dazu eins zu eins die objekt struktur zu übernehmen.
MFG
Markus
hi markus,
später vielleicht, wenn ich an meinem rechner sitze. Aber wenn du recherchierts findest du es vielleicht, wie man ein neues objekt instanziert und diesem dann werte zuordnet. Du solltest auch versuchen dich zu informieren, wie man funktionen einbindet unter asp (vb-script), damit du diese abfragen nicht immer wiederholen musst.
Gruß
Netghost
Hi,
Arbeite aber leider nicht mit PHP und weiß leider nicht wie das in ASP aussehen könnte:
macht nichts, ASP kann auch mit Arrays umgehen, wenn es einem das Leben auch unnötig erschwert und nicht gerade komfortabel ist. Und der html-Teil ist sowieso der gleiche.
Ansatz: Du zählst die Keys des Arrays und lässt eine for, bzw. while-Schleife laufen. In dieser Schleife prüfst Du ob das Array checkbox mit dem jeweiligen Key leer ist oder nicht und lässt deine DB updaten falls nicht. Den Namen der Spalte hast du ja als Key vorliegen.
Gruß,
small-step
Hi Markus
If Request.Form("Garage") = "true" then
rs("Garage") = Request.Form("Garage")
End ifGeht auch!
Du kannst das ganze in eine Funktion schreiben, die du für jede Checkbox ausführst. Allerdings must du dann vorher das form.objekt in ein neues objekt umwandeln, das wertzuweisungen zulässt (zumindestens ist es mir unbekannt, wie ich einem request.form(feld) einen neuen wert zuweise) Dann schreibst du die funktion die den wert überprüft und notfalls neu zuweist und rufst sie für jede checkbox auf.
Gruß
netghost