webForumDet fria alternativet

flersidigt formulär

ASP

23 svar · 673 visningar · startad av annasmurf

Medlem sedan mars 2006237 inlägg
Frågan#1

Hej!

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.

så kan någon hjälpa mig?

Medlem sedan juli 20041 183 inlägg
#2

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 :)

Medlem sedan maj 20033 218 inlägg
#3

Kanske sessions variabler kan vara ngt att spara det i?

Medlem sedan mars 2006237 inlägg
#4

mer exempel

Hej!

Kan ni ge mig mer exempel på hur jag ska lösa detta?

Medlem sedan sep. 2003301 inlägg
#5

jag skulle inte köra en sessions variabel jag skulle använda mig av inputs med atributet hidden.

vad har du klart.

Medlem sedan juli 20041 183 inlägg
#6

Fraggel skrev:

jag skulle inte köra en sessions variabel jag skulle använda mig av inputs med atributet hidden.

vad har du klart.

(y)

Medlem sedan mars 2006237 inlägg
#7

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>

<FONT color="black" size="4"><U><b>Vilken slags resa/tjänst bokade du?</b></U></FONT><br>
<p>
<b><A href="http://www.n.com/test3.asp?resatjanst=biljetthotell">biljetthotell</b></A><br>
<b><A href="http://www.n.com/test3.asp?resatjanst=biljetthotell">biljetthotelltransport</b></A><br>
<P>
<p>
<%=Request.Form("kontaktsort")%>
<input id="Text1" type="text" size="20" name="kontaktsort" value="<%=Request.Form("kontaktsort")%>"><br>

sen så får jag inte med den info, som gavs från sida 1 in till sida 3

Medlem sedan mars 2006237 inlägg
#8

så jag har använt input hidden till första och andra sidan men jag vill ju ha med svaren in i tredje sida oxå

Medlem sedan feb. 20032 027 inlägg
#9

här är ett utdrag av koden jag använder till min "bli medlem" sida

<%rID=request.querystring("rID")%>
<BODY class="bg" style="margin-top:10px;margin-left:10px;margin-right:10px;margin-bottom:0px;">
<%If Request.Querystring("step") = "1" then%>

<form name="f" onSubmit="return validateForm-new()" action="?step=2&rID=<%=rID%>" method="post">
<table cellpadding="0" cellspacing="0">
  <tr>
     <td style="<%=mainBGColor%>" class="presentation">
<fieldset>
<legend>Användaruppgifter</legend>
	 <font color="#FF0000">*</font>Användarnamn
	<input class="textbox" value="" type="text" name="an" size="15" maxlength="20">
<p>
	<font color="#FF0000">*</font>Lösenord
	<input  class="textbox" value="" type="password" name="lo" size="15" maxlength="15">
</fieldset>
</td>
</tr>
<%if request.querystring("err") = 1 then%>
<tr>
<td class="presentation" style="color:#FF0000; background-color:#FFFFFF; border-style:solid; border-width:thin; border-color:#000000;">
Ange användarnamn och lösenord
</td>
</tr>
<%end if%>
</table>
<input type="submit" value="Nästa">
</form>
<%End If%>

<%If Request.Querystring("step") = "2" then
an = Request.Form("an")
lo = Request.Form("lo")
rID = Request.Querystring("rID")

if Request.Form("an") = "" or Request.Form("lo") = "" then
response.redirect "?step=1&err=1"
end if%>

<form name="f" onSubmit="return validateForm-new()" action="?step=3&an=<%=an%>&lo=<%=lo%>&rID=<%=rID%>" method="post">
<table cellpadding="0" cellspacing="0">
  <tr>
<td style="<%=mainBGColor%>" class="presentation">
<fieldset>
<legend>Personliga uppgifter</legend>
	<font color="#FF0000">*</font>Förnamn
	<input class="textbox" value="" type="text" name="fn" size="15" maxlength="20">
<p>
	<font color="#FF0000">*</font>Efternamn
	<input class="textbox" value="" type="text" name="en" size="15" maxlength="15">

</fieldset>
</td>
</tr>

</table>

<input type="submit" value="Nästa">
</form>
<%End If%>
Medlem sedan mars 2006237 inlägg
#10

Får du då med dig infromationen till en databas då?

Medlem sedan mars 2006237 inlägg
#11

och det är bara en fil eller?

Medlem sedan feb. 20032 027 inlägg
#12

bara en fil och i slutet har jag samlat på mig alla variabler jag har och lägger in dem som vanligt i databasen

Medlem sedan mars 2006237 inlägg
#13

Men sedan har du en fil till där du ligger in det i databasen eller?
typ:

Set Connect = Server.CreateObject("ADODB.Connection")
Set RecSet = Server.CreateObject("ADODB.Recordset")

Connect.Open "DSN=;UID=;PWD="

SQL = "SELECT * FROM feedback WHERE 1=2"
RecSet.Open SQL, Connect, 1, 2

RecSet.AddNew

o.s.v.

Medlem sedan feb. 20032 027 inlägg
#14

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
Medlem sedan mars 2006237 inlägg
#15

var definerar du step?

Medlem sedan feb. 20032 027 inlägg
#16

step?

Medlem sedan mars 2006237 inlägg
#17

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

Medlem sedan feb. 20032 027 inlägg
#18

step är ju bara min variabel, du kan ju döpa en variabel till vad du vill
if sida= 1
if do = next

eller vad du vill :-)

Medlem sedan sep. 2003301 inlägg
#19
<%
'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.

Medlem sedan juni 200032 967 inlägg
#20

Hmm...

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

422 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
286 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
286 ms — ändringar (db)