Tjena
Har gjort ett anmälningsscript som jag nu har lite problem med.
När anmälan är gjort vill jag skriva ut ett kvitto på vad man anmält sig till.
Såhär ser min databasdesign ut:
[b]tbl_tavling[/b]
cId => ID, räknare
cName => Text
[b]tbl_pass[/b]
pId => ID, räknare
cId => Tal, relaterad till ovanstående.
[b]tbl_grenar[/b]
gId => ID, räknare
pId => Tal, relaterad till ovanstående.
[b]tbl_anmalda[/b]
aId => ID, räknare
gId => Tal, relaterad till ovanstående.
Det är som så att grenarna ligger under pass, tex. Pass 1 Lördag och det är här som jag inte får till det.
Har gjort såhär:
anmId = Request.Form("anmId")
If Not isNumeric(cId) Or cId = "" Then Response.reDirect("default.asp?mP=competition_notification")
If cInt(anmId) <> Session("usrId") Then Response.reDirect("default.asp?mP=logout")
openDB("def")
For Each sValue In Request.Form("gId")
If Session("visaKvitto") <> cId Then
sSql = "INSERT INTO tbl_compAnm_Anm " &_
"(anmGren, anmPers, anmDate, anmIp) " &_
"VALUES " &_
"(" &_
"" & sValue & ", " &_
"" & anmId & ", " &_
"NOW(), " &_
"'" & Request.ServerVariables("REMOTE_ADDR") & "'" &_
")"
oConn.Execute(sSql)
End If
Next
sSql = "SELECT anmGren, anmPers, phaseId, gDist " &_
"FROM tbl_compAnm_Anm tA INNER JOIN tbl_compAnm_gren tG " &_
"ON tA.anmGren = tG.gId " &_
"WHERE anmPers = " & Session("usrId") & " " &_
"ORDER BY tG.phaseId ASC"
Set rs = oConn.Execute(sSql)
pId = 0
If Not rs.EOF Then
While Not rs.EOF
If pId <> rs("phaseId") Then
Set rs0 = oConn.Execute("SELECT pName, pDate, pTime FROM tbl_compAnm_Phases WHERE pId = " & rs("phaseId"))
If Not rs0.EOF Then Response.Write("<span style=""font-weight: bold;"">" & rs0("pName") & " " & rs0("pDate") & " " & rs0("pTime") & "</span><br />") End If
Set rs0 = Nothing
End If
Response.Write(setDistance(rs("gDist")) & "<br />")
pId = rs("phaseId")
rs.MoveNext
Wend
End If
Session("visaKvitto") = cId
TimeOut = 5
Men frågan som kommer efter For.. Loopen plockar ju ut allt som den inloggade medlemmen har anmält sig till så¨det listar fler saker än just det man anmält sig till nu.
Skulle vilja få in något i forloopen istället så att resp. gren skrivs ut i samband med att allt sparas i databasen.
Problemet då är att den kommer skriva ut Passnamnet mer än en gång.
Du får använda en kontrollvariabel som @nders så vackert tipsade mig om :) kolla in denna tråden: http://www.webforum.nu/showthread.php?t=142847 mitt senaste inlägg borde lösa ditt problem!
dim i
i = 0
Do While Not rs.EOF
If CInt(i) < CInt(rs("passID")) Then
Response.Write strPassTitel
End If
rs.MoveNext
Loop
Tack, men som du ser i mitt inlägg ovan, så är det så jag gjort, utan att det riktigt fungerar.
Men jag stuvade om lite i koden och kom fram till följande:
For Each sValue In Request.Form("gId")
If Session("visaKvitto") <> cId Then
sSql = "INSERT INTO tbl_compAnm_Anm " &_
"(anmGren, anmPers, anmDate, anmIp) " &_
"VALUES " &_
"(" &_
"" & sValue & ", " &_
"" & anmId & ", " &_
"NOW(), " &_
"'" & Request.ServerVariables("REMOTE_ADDR") & "'" &_
")"
oConn.Execute(sSql)
End If
Set rs = oConn.Execute( "SELECT phaseId, gDist " &_
"FROM tbl_compAnm_gren " &_
"WHERE gId = " & sValue)
If Not rs.EOF Then
If phaseId <> rs("phaseId") Then
Set rs1 = oConn.Execute("SELECT pName, pDate, pTime FROM tbl_compAnm_Phases WHERE pId = " & rs("phaseId"))
If Not rs1.EOF Then
Response.Write("<span style=""font-weight: bold;"">" & rs1("pName") & " " & rs1("pDate") & " " & rs1("pTime") & "</span><br />")
End If
Set rs1 = Nothing
End If
Response.Write(" " & setDistance(rs("gDist")) & "<br />")
phaseId = rs("phaseId")
End If
Next
Som du ser är det nästan likadant som min kod ovan, bara det att jag flyttade koden in i forloopen.
Det funkar kanon!
Tjena!
Nu har jag stött på problem igen, men nästan samma sak.
Nu ska jag på något sätt få till en överskådlig grupplista där alla anmälningar ska listas efter varandra.
Min tanke är att resultatet ska se ut såhär:
Pass 1 09.00
50m Fjärilsim
Person 1
Person 2
Person 3
Person 4
200m Fjärilsim
Person 1
Person 2
Pass 2 12-14
100m Ryggsim
Person 1
200m Ryggsim
Person 1
Person 2
Person 3
Person 4
Ja, ni förstår säkert principen.
Nu är det som så att jag har försökt fram och tillbaks med olika saker, men får inte till det alls med sorteringen av grupper och personer.
Såhär har jag gjort:
openDB("def")
sSql = "SELECT cId, cName, cStart, cEnd, cHall, cOrt, pId, pName, pDate, pTime " &_
"FROM tbl_compAnm_Comp tC INNER JOIN tbl_compAnm_Phases tP " &_
"ON tC.cId = tP.compId " &_
"WHERE cId = " & cId & " " &_
"ORDER BY tP.pName ASC, tP.pDate ASC, tP.pTime ASC"
Set rs1 = oConn.Execute(sSql)
If Not rs1.EOF Then
phaseId = 0
While Not rs1.EOF
If phaseId <> rs1("pId") Then
Response.Write(rs1("pName") & " " & rs1("pDate") & " " & rs1("pTime") & "<br>")
End If
s = "SELECT gId, phaseId, gNum, gDist, anmGren, anmPers " &_
"FROM tbl_compAnm_gren tG INNER JOIN tbl_compAnm_Anm tA " &_
"ON tG.gId = tA.anmGren " &_
"WHERE tG.phaseId = " & rs1("pId") & " " &_
"ORDER BY gId ASC"
Set rs2 = oConn.Execute(s)
If Not rs2.EOF Then
grenId = 0
Do Until rs2.EOF
If grenId <> rs2("anmGren") Then
Response.Write(setDistance(rs2("anmGren")) & "<br>")
End If
Response.Write(rs2("anmPers") & "<br>")
grenId = rs2("anmGren")
rs2.MoveNext
Loop
End If
phaseId = rs1("pId")
rs1.MoveNext
Wend
Else
' // Tävlingen hittade inte...
End If
closeDB()
Hur ska jag göra med det här?
Är mitt tappra sätt ovan ett dåligt sätt att lösa det här på?
Tack!
258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25