Inmatning av flera poster till samma kolumn

ASP

14 svar · 274 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Trådstart#1

Hejsan,

Jag undrar hur man gör för att mata in flera värden till en speciell kolumn, dvs att man har flera <input="text" name="blabl" value="40">, kanske 10st sådana under varandra sedan när man klickar på skicka så ska det som står i varje textfält skrivas in i en egen rad i den specifika kolumnen, plus att ett datum ska läggas till...

Hoppas ni förstår vad jag menar...

Medlem sedan feb. 20012 412 inlägg
#2

Hej, koden förutsätter att de 3första fälten är av texttyp och det sista är av datumtyp. Det är bara att upprepa liknande mönster och lägga till så många fält du önskar.

sql = "INSERT INTO tabellen " & _
" (field1, field2, field3, dteDatum) " & _
" VALUES('" & Request.form("field1") & "', '" & Request.form("field2") & "', " & _
" '" & Request.form("field3") & "' , Now())"

Connection.Execute sql,,128

red, delade upp det på flera rader för att slippa oavsiktliga radbrytningar.

mvh Jörgen :)

Medlem sedan dec. 20003 563 inlägg
#3

Kanske stämmer det som står över men jag tyckte det verkade som om du ville skapa en ny post för varje input.
Kanske jag är ute och cyklar?

Hur som helst så kan du göra det på nått liknande sätt.

<%
for each x in request.form
conn.execute("SQL-kod där x = value från inputen")
next
%>

[r]Om du vill ha mer kontroll på vilka input och var de hamnar så använd en array med alla inputnamn som du har på förregående sida.

<%
namn = array("namn", "fodd", "bor")

for x = 0 to ubound(namn, 1)
response.write x & " = " & request.form(x)
next
%>
Medlem sedan dec. 20001 626 inlägg
#4

Jepp, cyprus vi förstod varandra bra där, du tolka mig rätt :) , så här ser min kod ut för hela filen, det är en väldigt enkel kod, men vad är det jag ska skriva då jag skriver till databasen jag använder mig inte utav SQL, så här ser det ut:

<html>

<head>
<title>Uppdatering av databas</title>
</head>

<body>

<% If Request.Querystring("action") = "" %>

<p>Uppdatera databasen:</p>
<p>&nbsp;</p>
<form type="method" action="kunskap.asp?action=add">
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
</form>

<%End if%>

<% If Request.Querystring("action") = "add" %>
<%
Set Connect = ServerCreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("datab.mdb")
%>
<%

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   	Addera = "SELECT * FROM kunskap"

   	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
	RecSet.AddNew

	RecSet("kunskap") = Request.Form("kunskap")
	RecSet("datum") = Request.Form("datum")	

	RecSet.Update
	RecSet.Close
	Connect.Close
	Set Connect = Nothing

%>
<%End If%>

Databasen är uppdaterad...
</body>

</html>
Medlem sedan dec. 20001 626 inlägg
#5

Glömde Then i request.queystring men hur som helst det är inte problemet utan problemet är då den skriver till databasen

Medlem sedan dec. 200012 464 inlägg
#6
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM kunskap"

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

for i = 1 to request.form("kunskap").count

RecSet.AddNew
RecSet("kunskap") = Request.Form("kunskap")(i)
RecSet("datum") = Request.Form("datum") 
RecSet.Update

next
Medlem sedan dec. 20001 626 inlägg
#7

Det fungerar inte, får inget felmeddelande men den lägger inte till ngt i databasen...

<% If Request.Querystring("action") = "add" then %>
<%
Set Connect = ServerCreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("datab.mdb")
%>
<%

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   	Addera = "SELECT * FROM kunskap"

   	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
	
	For i = 1 to request.form(kunskap).count
	
	RecSet Add.New
	RecSet("kunskap") = Request.Form("kunskap")(i)
	RecSet("datum") = Request.Form("datum")	
	RecSet.Update

	next

	RecSet.Close
	Connect.Close
	Set Connect = Nothing

%>
<%End If%>
Medlem sedan dec. 200012 464 inlägg
#8

Du har glömt citationstecken här

For i = 1 to request.form("kunskap").count
Medlem sedan dec. 20001 626 inlägg
#9

Det fungerar fortfarande inte, har lagt till de men den skriver fortfarande inte till databasen...

Medlem sedan dec. 200012 464 inlägg
#10

Om du lägger till method='POST' i ditt form element så att du får värdena i request.form ...

<p>Uppdatera databasen:</p>
<p> </p>
<form type="method" action="kunskap.asp?action=add" method="POST">
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
</form>

Du kan ju även lägga till en testutskrift i kunskap.asp så att du ser att du får in värden.

response.write "Antal fält:" & request.form("kunskap").count
For i = 1 to request.form("kunskap").count
Medlem sedan dec. 20001 626 inlägg
#11

Alltså LArs så här ser hela min kod ut:


<html>

<head>
<title>Uppdatering av databas</title>
</head>

<body>

<% If Request.Querystring("action") = "" then %>

<p>Uppdatera databasen:</p>
<p>&nbsp;</p>
<form type="method" action="kunskap.asp?action=add" method="POST">
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="submit" value="GO">
</form>

<% End if %>

<% If Request.Querystring("action") = "add" then %>
<%

	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("datab.mdb")
%>
<%
	Set RecSet = Server.CreateObject("ADODB.Recordset")
   	Addera = "SELECT * FROM kunskap"

   	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
	
	For i = 1 to request.form("kunskap").count
	
	RecSet Add.New
	RecSet("kunskap") = Request.Form("kunskap")(i)
	RecSet("datum") = Request.Form("datum")	
	RecSet.Update

	next

	RecSet.Close
	Connect.Close
	Set Connect = Nothing

%>
<% End if %>

</body>

</html>

Och får detta felmeddelande:

ADODB.Recordset fel '800a0bb9' 

Programmet använder felaktiga parametrar, som antingen ligger utanför tillåtet intervall, eller som skapar en inbördes konflikt. 

kunskap.asp, rad 36
Medlem sedan dec. 200012 464 inlägg
#12

Du har inte med ADOVBS.inc så vitt jag kan se och då är konstanterna adOpenStatic och adLockOptimistic odefinierade.

Du kan ju definiera dom själv

const adOpenStatic = 3' 
const adLockOptimistic = 3

eller använda adovbs.inc

Medlem sedan dec. 20001 626 inlägg
#13
Körningsfel i Microsoft VBScript fel '800a01a8' 

Objekt krävs.: 'Add' 

kunskap.asp, rad 40

Vart ska jag tryck in add?

Medlem sedan dec. 19998 577 inlägg
#14

Denna raden skall ändras:

RecSet Add.New

till:

RecSet.AddNew
Medlem sedan dec. 20001 626 inlägg
#15

Tack Lars G och tack Vide jag fick det att fumgera nu :-) ..

259 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)