Frågan 12 aug. 2001 15:38 #1 hej!
jag håller på med ett script som ska lägga in nya poster i en databas, så här ser sidan där man skriver in uppgifterna ut:
<form method="post" action="laggtill2.asp">
<%
i = 1
Do While i <= 5
%>
<table>
<tr>
<td><b>Nr:</b></td>
<td><b>Förnamn:</b></td>
<td><b>Efternamn:</b></td>
<td><b>Adress:</b></td>
<td><b>PostNr:</b></td>
<td><b>Ort:</b></td>
<td><b>TeleNr:</b></td>
</tr>
<tr>
<td>
<select name="knr">
<% iCount = 1
Do While iCount <= 32
Response.Write "<option value="""
Response.Write iCount
Response.Write """>"
Response.Write iCount
Response.Write "</option>" & vbcrlf
iCount = iCount + 1
Loop %>
</select>
</td>
<td><input type="text" name="fornamn"></td>
<td><input type="text" name="efternamn"></td>
<td><input type="text" name="adress"></td>
<td><input type="text" name="postnr"></td>
<td><input type="text" name="ort"></td>
<td><input type="text" name="telenr"></td>
</tr>
</table>
<br><br>
<%
i = i + 1
Loop
%>
<input type="submit" value="Lägg till!">
</form>
den sidan visar ju 5 st. likadana tabeller, alltså den koden innanför loopen.
nu vill jag att man ska kunna lägga till flera rader samtidigt i databasen!
scriptet som tar emot uppgifterna:
<%
strForNamn = Request.Form("fornamn")
strEfterNamn = Request.Form("efternamn")
strAdress = Request.Form("adress")
strPostNr = Request.Form("postnr")
strOrt = Request.Form("ort")
strTeleNr = Request.Form("telenr")
strKlassNr = Request.Form("knr")
Set eConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("klasse.mdb")
eConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "SELECT * From Elever WHERE 1=2"
rs.Open SQL, eConn, 1, 2
rs.AddNew
rs("FörNamn") = strForNamn
rs("EfterNamn") = strEfterNamn
rs("Adress") = strAdress
rs("PostNr") = strPostNr
rs("Ort") = strOrt
rs("TeleNr") = strTeleNr
rs("KlassNr") = strKlassNr
rs.Update
rs.Close
%>
Posterna är registrerade!
man kanske kan använda en loop på nåt sätt i koden ovan, men hur ??
tacksam för svar!
/henrik
L LarsG Medlem sedan dec. 2000 12 464 inlägg I och med att fälten i ditt formulär har samma namn så läggs värdena som en kommaseparerad lista som man kan dela upp med funktionen split.
<%
arrForNamn = split(Request.Form("fornamn"),",")
arrEfterNamn = split(Request.Form("efternamn"),",")
arrAdress = split(Request.Form("adress"),",")
arrPostNr = split(Request.Form("postnr"),",")
arrOrt = split(Request.Form("ort"),",")
arrTeleNr = split(Request.Form("telenr"),",")
arrKlassNr = split(Request.Form("knr"),",")
Set eConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("klasse.mdb")
eConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "SELECT * From Elever WHERE 1=2"
rs.Open SQL, eConn, 1, 2
for i = 0 to ubound(arrForNamn)
rs.AddNew
rs("FörNamn") = arrForNamn(i)
rs("EfterNamn") = arrEfterNamn(i)
rs("Adress") = arrAdress(i)
rs("PostNr") = arrPostNr(i)
rs("Ort") = arrOrt(i)
rs("TeleNr") = arrTeleNr(i)
rs("KlassNr") = arrKlassNr(i)
rs.Update
next
rs.Close
%>
Posterna är registrerade!
------------------
essentitia preter non sans multiplicandum