Jag skulle behöva ha hjälp med att göra ett flersidigt formulär i asp!
Jag ska göra en kundenkät, där de få svara på olika frågor och beroende på vad de svarar så ska de komma till en annan sida och sen på denna sida så ska de komma till ytterligare en sida. Svaren ska sparas i en SQL-databas.
Du måste mellanlagra data mellan de olika sidorna på något sätt. Antingen kan du lägga dem i vanliga variablar när användaren byter sida och på sista sidan spara allt eller så kan du spara data i databasen direkt med risk att du får ofullständiga svar men ändå några :)
utdrag först sidan:
<form id="Form1" name="frmEnquiry" action="test2.asp" method="post">
<table id="Table3" cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td vAlign="top" width="100%" rowSpan="0">
<FONT color="black" size="4"><B><U>Hur kom du i kontakt med oss</U></B></FONT>
<p>
Klicka på det alternativ som stämmer, för att gå vidare.
<br>
<br>
<b><A href="http://www.n.com/test2.asp?kontaktsort=bekant">Via bekanta/arbetskamrater el liknande</b></A><br>
<b><A HREF="http://www.n.com/test2.asp?kontaktsort=foreningklubb">Via min förening</b></A><br>
utdrag sida 2:
<form id="Form1" name="frmEnquiry" action="test3.asp" method="post">
<table id="Table3" cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td vAlign="top" width="100%" rowSpan="0">
<FONT color="black" size="2"><B>De flesta följande frågor är graderingsfrågor från 1-7,
då 1 betyder botten och 7 toppen.</B></FONT><br>
<% If Request.QueryString("kontaktsort") = "bekant" Then %>
<input id="Hidden6" type="hidden" type="text" size="20" name="kontaktsort" value="bekant"><br>
<FONT color="black" size="4"><FONT color="black" size="4"><U><b>Via någon jag känner</b></U></FONT><br>
<br>
<FONT color="black" size="3"><B>Vem rekommenderade oss?</B></FONT><BR>
<font size="2" color="black"><input type="radio" name="vemrekoss" value="vän" ID="Radio3"><b>Vän</b></font><br>
<font size="2" color="black"><input type="radio" name="vemrekoss" VALUE="arbetskamrat" ID="Radio4"><b>Artbetskamrat</b></font><br>
<font size="2" color="black"><input type="radio" name="vemrekoss" value="släkting" ID="Radio5"><b>Släkting</b></font><br>
<font size="2" color="black"><input type="radio" name="vemrekoss" value="makamake" ID="Radio6"><b>Maka/Make</b></font><br>
<font size="2" color="black"><input type="radio" name="vemrekoss" value="annan" ID="Radio7"><b>Annan</b></font><br>
<% Elseif Request.QueryString("kontaktsort") = "foreningklubb" Then %>
<input id="Hidden7" type="hidden" type="text" size="20" name="kontaktsort" value="foreningklubb"><br>
<FONT color="black" size="4"><U><b>Via min förening/klubb</b></U></FONT>
<p>
<FONT color="black" size="3"><B>Vilken förening/klubbtillhör du?</B></FONT><BR>
<input id="Text66" type="text" size="50" name="foreningklubb"><br>
<% Else %>
Det blev något <b>fel</b>!
<% End If %>
<P>
när jag ska lägga in dem i databasen så gör jag bara så här
<!-- #include virtual="/include/dbconn.asp" -->
<!-- #include virtual="/include/functions.asp" -->
<!-- #include virtual="/include/variabler.asp" -->
<%varUsername=Request.Querystring("an")
set rs=objConn.execute("SELECT count(username) as cUsername FROM tblUsers WHERE username = '"& varUsername &"'")
If rs("cUsername") => 1 Then
response.redirect "/Registration/reg-form.asp?err=double"
else
varUsername = FriendlySQL(Request.Querystring ("an"))
varPassword = Request.Querystring ("lo")
varFornamn= FriendlySQL(Request.Querystring ("fn"))
varEfternamn= FriendlySQL(Request.Querystring ("en"))
varCommunity = FriendlySQL(request.form("txtCommunity"))
varCity = FriendlySQL(Request.Form ("underKommun"))
varSex = FriendlySQL(Request.Querystring ("sex"))
varRegDate = now()
varWebsite = FriendlySQL(Request.Form ("h"))
varEmail = FriendlySQL(Request.Form ("ep"))
varPersonnr = FriendlySQL(Request.Querystring ("pn"))
varRID = FriendlySQL(Request.Querystring ("rID"))
'varPres= FriendlySQL(Request.Form("txtPres"))
'varTips= FriendlySQL(Request.Form("txtTipsadAv"))
SET objConn = Connect()
SQL = "INSERT INTO tblUsers"
SQL = SQL & "(username, userPass, Fornamn, Efternamn, Community, City, Sex, Registration, Website, email, persnr) "
SQL = SQL & "VALUES('"& varUsername &"','"& varPassword &"','"& varFornamn &"','"& varEfternamn &"','"&varCommunity &"','"& varCity &"','"& varSex &"','"& varRegDate &"','"& varWebsite &"','"& varEmail &"','"& varPersonnr &"')"
varID=session("userID")
objConn.Execute(SQL)
varRubrik = "Välkommen till Webbisen.com"
varMeddelande = "Välkommen till mitt community som jag har valt att kalla Webbisen." & _
" Här kan du komma i kontakt med andra medlemmar och knyta nya kontakter"
varOvrigt="Webbisen är under uppbyggnad men det är ett fullt fungerande community." &_
" Detta betyder att fler funktioner tillkommer och att buggar fixas när de upptäcks. " &_
" Om du gillar att vara här och vill sponsra mitt arbete så kan du bli VIP-medlem. "&_
" Du kan läsa mer om detta under länken VIP " &_
" i menyn."
varBryt = vbCrLf & vbCrLf
varSlut = "Har du fler frågor så ser jag att du använder Åsikter som du hittar i menyn " &_
" /Webbisen.com med Crew"
varTotal = varMeddelande & varBryt & varOvrigt & varBryt & varSlut
Set id=objConn.Execute("Select * From tblUsers order by userID desc limit 1")
SQL = "INSERT INTO tblUsers_imail"
SQL = SQL & "(mailDate,mailTime,sender,reciever,Headline,message, mailRead) "
SQL = SQL & "VALUES('"& Date &"','"& Time &"','"& 1 &"','"& id("userID") &"','"& varRubrik &"','"& varTotal &"', 1)"
objConn.Execute SQL
if varRID <> "" then
objConn.Execute="update tblUsers set nyaMedlemmar=nyaMedlemmar+1 where userID="& varRID
end if
end if
objConn.Close
Set objConn = nothing
%>
Du är nu medlem på Webbisen.com
<%
'Denna kod skall in i Alla formulär utom det första
Dim oFormData,Item,hidden
Set oFormData 0 Server.CreateObject("Scripting.Dictionary")
getHead(oFormData)
For Each Item in oFormData
hidden = hidden & "<input type=""hidden"" name=""" & Item & """ id=""" & Item & """ value=""" & oFormData(Item) & """ />
Next
Sub getHead(byVal oData)
' Läser ner ALL formulärdata i en Dictionary oavsett om det är med method=post eller method=get
Dim Item
For Each Item In Request.Form
oData(Item) = Request.Form(Item)
Next
For Each Item In Request.QueryString
oData(Item) = Request.QueryString(Item)
Next
End Sub
%>
<form name="form2eller3" method="post">
<%=hidden%>
<!--Resteraden formulär-->
</form>
Vad händer i koden ovan?
Jo du trycker ner all formulär data i en Dictionary för att sedna skapa en <input type=hidden> för varje fält, att tänka på är att du måste bör ha unika namn på ALLA kontroller i hela formuläret. På detta sätt får du med dig ALL data igenom hela formulärs serien utan att behöva spara ner den på servern och hålla på strula med det.
Nackdelar!
Skulle anv tappa kontakten eller råka stänga sitt fönster i något skede under registreringen så tappar man alla data.
Fördelar!
Enkelt liten insats i kod räknat.
Jag förstår inte alls varför Fraggel går omvägen via ett dictionaryobjekt? Jag hade lätt gått raka vägen på request.form (eller request.querystring) med en for each-loop. Det blir en enklare och mindre insats i kod räknat.
mvh
265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e