webForumDet fria alternativet

Hur skickar man mågna formulär

ASP

9 svar · 235 visningar · startad av eriks

Medlem sedan apr. 20011 418 inlägg
Frågan#1

Hej!

Jag lägger upp data till en databas med hjälp av ett forumlär. Ofta vill jag emellertid lägga upp 1 - 5 poster åt gången, och då måste jag klicka fram och tillbaka varje gång. Kan man inte med hjälp av en Loop göra så att formuläret visades 5 gånger, och att sedan lades de formulär som var ifyllda in i databasen (det är ju inte säkert att jag lägger upp exakt 5 poster varje gång). Man måste väl använda en Loop både på den sidan där man lägger upp formuläret och på den sidan som man lägger in posterna i databasen?

Jag är inte riktigt klar över hur koden ska se ut. Någon som har förstått och vet hur man ska göra?

Tack! /Erik

Medlem sedan apr. 20017 inlägg
#2

Loopa som sagt igenom formuläret, fast innanför <form>-taggarna, du kan bara skicka ett form åt taget, och lägg till ett index efter varje form-namn typ...

For i = 1 to 5
%>
<input type="text" name="e-mail<%= i%>">
<%
Next

Sen i den som tar emot så kollar du nått fält

i = 0
Do
i = i + 1
email = request("email" & i)

if len(email) < 1 then
   noMore = True
else
   lägg in i databas
end if
Until noMore

Så snurrar det nog på ganska bra! ;)

------------------
Leif Landén
Mobile: +46 (702) 08 11 38

"A whole lot of failure will help you succed."

[Redigerat av berinder den 02 maj 2001]

Medlem sedan apr. 20011 418 inlägg
#3

Tack för hjälpen, det blir emellertid lite problem. Jag får svaret "programsats förväntas" om jag bara skriver

Until noMore

Hur ska jag skriva?

/Erik

Medlem sedan apr. 20011 418 inlägg
#4

Jag förstår inte koden riktigt.
Vad betyder Until noMore ?

Medlem sedan dec. 200012 464 inlägg
#5

until avslutar ett block som man börjar med do. T.ex.

do

until nomore

koden mellan do och until kommer att utföras tills dess att variabeln nomore får värdet true

Du kan ju visa den kod du har nu så kan vi nog se varför du får felet programsats förväntas.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 200032 967 inlägg
#6

larsg,

förklara för mig.

do until nomore
...
loop

kontra

do
...
until nomore

jag har aldrig sett ditt sätt, så jag känner mig nödgad att kasta in en fråga. (veto :q ;) )

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

Medlem sedan dec. 19998 577 inlägg
#7

Det är väl bara ett annat sätt att skriva det på... ibland har det vissa fördelar med att ha programsatsen sist i loopen... :)

------------------
Budweiser - Slightly contaminated water... probably harmless, but I would recommend boiling before you drink it...
webEye.nu SweQuake.com

Medlem sedan dec. 200012 464 inlägg
#8

Jo visst, för do så skall det ju alltid vara med en loop, vilket jag glömde.
(Använder nästan enbart while ... wend själv.)

Så ett av eriks problem är att det saknas ett loop i koden

------------------
essentitia preter non sans multiplicandum

Medlem sedan apr. 20011 418 inlägg
#9

Så här ser koden ut:

<%

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\asp\test.mdb"

i = 0
Do
i = i + 1

email = request("email" & i)
if len(email) < 1 then
noMore = True
else

SQLStmt = "Insert Into Namn "
SQLStmt = 	SQLStmt & 	"(Namn) "
SQLStmt = 	SQLStmt & 	"VALUES('" &(Request.Form("email")) & "')"
Connection.Execute(SQLStmt)

end if
Until noMore
%>

Svaret blir: Programsats förväntas. Om jag instället ändrar till
Do Until noMore
............
Loop

då händer ingenting. Inget felmeddenlande, ingenting. Hur ska jag gå åt det hela?

Medlem sedan apr. 20011 418 inlägg
#10

Jag löste det, puh! Jag ändrade Till Do/Loop, och så rättade jag till lite andra småfel. Tack för all hjälp!

En annan sak. Om Man har fem fält (som i detta exemplet), och om man fyller i fält 1 och 4 (alltså inte i rätt ordning, man lämnar tre fält tomma), så skrivs inget in i databasen. Kan man göra så att det inte spelar någon roll vilket fält man fyller i, typ genom en enkel if -sats?

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)