DevTrain

Autor: Andreas Rauch

Organisierte Formulare - Listboxen, Textarea und Checkboxen ab in die Datenbank

Bereits in einem früheren Artikel haben wir das Thema Formulardaten behandelt ("http://www.developer-training.de/news.asp?artnr=483").Aber was kann man damit alles anstellen?


Zum Beipspiel Checkboxen oder Radiobuttons auslesen und vor allem deren Werte in die Datenbanken schreiben. Wie realisieren wir das?

Mit uns nun schon bekannten Methode method=POST schicken wir die Daten an eine ASP Seite, die mit Request.Form("Formularfeld") die Werte der einzelnen Felder ausliest.

Vergessen Sie nicht um die Felder das Form Tag zu setzten, sonst funktionierts nicht.
So nun gleich ein kleines Beispiel: Die Werte der Felder werden über den Submitbutton an unserere Seite übermittlet:


<form action="insert.asp" method=POST>

In unserer HTML Seite haben wir z.B radio Buttons:

<INPUT id=rdPreis name=rdPreis type=radio value=1>
<INPUT id=rdPreis name=rdPreis type=radio value=2>
<INPUT id=rdPreis name=rdPreis type=radio value=3 checked>
<INPUT id=rdPreis name=rdPreis type=radio value=4>
<INPUT id=rdPreis name=rdPreis type=radio value=5>


Der ermittlete Wert wird über value zugewiesen. Auch Checkboxen werden über Value ausgelesen:

<input type=checkbox name="chkKatalog" value="1"> Katalog<br>
<input type=checkbox name="chkEmail" value="2"> Newsletter<br>


Wenn Sie Bemerkungen oder Notizen haben wollen, dann bieten Sie doch eine Textbox an:

<TEXTAREA id=TEXTAREA1 name=TEXTAREA1 style="HEIGHT: 57px; WIDTH: 399px"></TEXTAREA>


Auch den ausgewählten Wert einer Listbox bekommen wir so zurück:

<select name="Liste" size=3>
<option> Andi Balu
<option selected> Andi Kleister
<option> Andi Stumpi
</select>


Wichtig ist, daß sie den Feldern eindeutige und aussagekräftige Namen zuweisen.
Zum Schluß der Submit Button:

<INPUT id=submit1 name=submit1 type=submit value=Submit>


So nun kommen wir zur Datenbankgeschichte:

In unserer ASP Seite fragen wir zunächst mal ab, ob überhaupt POST gesendet wurde.


if Request.ServerVariables( "REQUEST_METHOD" ) = "POST" then

Dann bauen wir uns die DB-Connection auf

on error resume next
  set con=Server.CreateObject("ADODB.Connection")
  con.Open("Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=xy;Data Source=YX")

  und gestalten den SQL- INSERT 

sql="Insert into formular values('" & cstr(ID) & "',getDate()," & Request.Form("rdpreis") & "," & Request.Form("rdZeit") & "," & Request.Form("rdqual") &  "," & Request.Form ("rdges") & ",'" & Request.Form("textarea1") & "')"

Damit das ganze sauber abgerundet wird, nehmen wir in unserem Beispiel noch das aktuelle Datum dazu.

So und nun gehts schon los!

Response.Write(sql)
con.Execute(sql)

Mit einem kleinen Danke schliessen wir unsere Seite!

Response.Redirect("danke.htm"))
 end if


TIPP:

Wollen Sie einmal z.B. alle Werte von einer unbestimmten Anzahl Checkboxen wissen, dann wie folgt:

Ein probates Mittel dazu ist es ein hidden Feld anzulegen

<INPUT type="hidden" name=txt value='Xy'> 
' denn damit stellen wir die Anzhal der Felder fest.


Anzahl = Request.Form("txt").Count

For i = 1 To Anzahl
     wert = cint(Request.Form("txt")(i) )    
     if cint(Request.Form("chkmail" & cstr(wert)))>0 then
       mail=1
     end if
     if cint(Request.Form("chkkatalog" & cstr(wert)))>0 then
       katalog=1
     end if

 ' und hier wieder unser INSERT
 ' oder noch besser eine Stored Procedure, der wir nur noch
 ' die Parameter übergeben müssen    
Next

 

Das wars!

Viel Spaß!


Erfasst am: 04.09.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=614
© Copyright 2003 ppedv AG - http://www.ppedv.de