EeriksMedlem sedan apr. 20011 418 inlägg 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
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]
EeriksMedlem sedan apr. 20011 418 inlägg 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
EeriksMedlem sedan apr. 20011 418 inlägg Jag förstår inte koden riktigt.
Vad betyder Until noMore ?
LLarsGMedlem sedan dec. 200012 464 inlägg 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
@ndersMedlem sedan juni 200032 967 inlägglarsg,
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>
VideMedlem sedan dec. 19998 577 inläggDet ä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
LLarsGMedlem sedan dec. 200012 464 inlägg 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
EeriksMedlem sedan apr. 20011 418 inlägg 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?
EeriksMedlem sedan apr. 20011 418 inlägg 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?