Det ser ut som att grundvillkoret request.querystring("action")="skapa" inte uppfylls. Kontrollera att querystringen finns där och att den har rätt värde.
Mvh
12 svar · 263 visningar · startad av Thompa__85
Tja! Denna kod ska kolla så att man inte redan skapat ett team.. den ska alltså kolla om vemsid är samma som session("id").. är det så här jag ska göra? Men man skickas bara tillbaka till team.asp...
if request.querystring("action")="skapa" then
if rs("vemsid") = session("id") Then
response.redirect "team_redan.asp"
else
rs.addnew
rs("vem")=session("user")
rs("vemsid")=session("id")
rs("team")=request.form("team")
rs("slogan")=request.form("slogan")
rs("level")= "newbie"
rs("antal")= "1"
rs("datum")=now
rs.update
response.redirect "team_done.asp"
end if
else
response.redirect "team.asp"
end if
Det ser ut som att grundvillkoret request.querystring("action")="skapa" inte uppfylls. Kontrollera att querystringen finns där och att den har rätt värde.
Mvh
mjo.. kanske ska förklara lite...
de finns en sida som heter team.asp... där finns en länk som går till den där sidan...
men som det är nu så när jag klickar på länken på team.asp.. så kommer inte ens sidan med if satsen upp :s
Den här koden är att föredra, du måste skapa en funktion som tar bort '-tecken i variablerna som ska in i databasen, det kallas för SQL-injections. (Sök i forumet för att få reda på mer.) För övrigt så är det inte bra ifall om HTML-kod tillåts, så därför kör vi en HTMLEncode i funktionen också.
Funktionen:
<%
Function Fix(str)
str = Server.HTMLEncode(str)
str = Replace(str,"'","''")
Fix = str
End Function
%>
<%
if request.querystring("action")="skapa" then
if rs("vemsid") = session("id") Then
rs.close : set rs = nothing
cn.close : set cn = nothing
response.write "Laget finns redan, du får välja ett annat namn. Var god backa."
else
rs.close : set rs = nothing
cn.execute("INSERT INTO din_tabell (vem,vemsid,team,slogan,level,antal,datum) Values('" & Fix(session("user")) & "','" & Fix(session("id")) & "','" & Fix(request.form("team")) & "','" & Fix(request.form("slogan")) & "',level='"newbie"',antal="1",datum=Now())")
cn.close : set cn = nothing
response.redirect "team_done.asp"
end if
else response.Write "Det blev ett fel, var god backa."
end if
%>
Som du kanske ser så behövde du inte ha en Response.Redirect i slutet. Om datan som skickas med i adressfältet inte är action=skapa så skriver vi bara ut ett litet felmeddelande. Hoppas min kod fungerar,jag känner mig lite tom i huvudet bara.
m_soderlund skrev:
Den här koden är att föredra, du måste skapa en funktion som tar bort '-tecken i variablerna som ska in i databasen, det kallas för SQL-injections. (Sök i forumet för att få reda på mer.) För övrigt så är det inte bra ifall om HTML-kod tillåts, så därför kör vi en HTMLEncode i funktionen också.
Funktionen:
<% Function Fix(str) str = Server.HTMLEncode(str) str = Replace(str,"'","''") Fix = str End Function %><% if request.querystring("action")="skapa" then if rs("vemsid") = session("id") Then response.write "Laget finns redan, du får välja ett annat namn. Var god backa." else Cn.Execute("UPDATE din_tabell Set vem=Fix(session("user")),vemsid=Fix(session("id")),team=Fix(request.form("team")),slogan=Fix(request.form("slogan")),level="newbie",antal="1",datum=Now()response.redirect "team_done.asp" end if else Response.Write "Det blev ett fel, var god backa." end if %>Som du kanske ser så behövde du inte ha en Response.Redirect i slutet. Om datan som skickas med i adressfältet inte är action=skapa så skriver vi bara ut ett litet felmeddelande. Hoppas min kod fungerar,jag känner mig lite tom i huvudet bara.
okej.. alltså det jag söker e att den ska kolla så man inte skapat ett lag tidigare.. för man ska som medlem bara kunna skapa ett lag.. gäller de samma kod för de?
Jesper T skrev:
Thompa__85 skrev:
där finns en länk som går till den där sidan...
Hur ser den ut då?
Helt som vanligt:
<a href="team_skapa.asp">Skapa ett eget lag</a>
Notera att koden jag postade först var fel, jag redigerade den sedan så nu är den att föredra hoppas jag.
/r Och sedan måste du stänga ner alla databasobjekt också, ifall om laget finns i databasen.
/rr Vad tusan svarade jag på? Jag tror Jesper_T löste saken åt dig. Men jag förbättrade i alla fall din kod, se till att du ej använder Recordset-objektet när du ska sätta in grejor i databasen, det går bättre utan Recordset (i alla fall snabbare).
/rrr Tusan vad det känns ovant att skriva kod med små bokstäver, ex. cn.execute i stället för Cn.Execute med mera..
Men i den länken finns ju ingen querystring ju.
team_skapa.asp?action=skapa
Jesper T skrev:
Men i den länken finns ju ingen querystring ju.
team_skapa.asp?action=skapa
nej men på sidan skapa_team.asp där den koden finns, där finns också ett formulär med team_skapa.asp?action=skapa
får detta fel:
Microsoft VBScript compilation error '800a03ee'
Expected ')'
/adde/star/team_skapa.asp, line 29
Cn.Execute("INSERT INTO din_tabell (vem,vemsid,team,slogan,level,antal,datum) Values('" & Fix(session("user")) & "','" & Fix(session("id")) & "','" & Fix(request.form("team")) & "','" & Fix(request.form("slogan")) & "',level="newbie",antal="1",datum=Now())")
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
Den SQL strängen ser väll ändå lite skumm ut?
Cn.Execute("INSERT INTO din_tabell (vem,vemsid,team,slogan,level,antal,datum) Values('" & Fix(session("user")) & "','" & Fix(session("id")) & "','" & Fix(request.form("team")) & "','" & Fix(request.form("slogan")) & "',level="newbie",antal="1",datum=Now())")
Skulle jag ändra till
Cn.Execute("INSERT INTO din_tabell (vem,vemsid,team,slogan,level,antal,datum) Values('" & Fix(session("user")) & "','" & Fix(session("id")) & "','" & Fix(request.form("team")) & "','" & Fix(request.form("slogan")) & "', '"newbie"' , '"1"' , #"Now()"#)")
Fast jag är ju ingen höjdare på SQL.
jstal skrev:
Den SQL strängen ser väll ändå lite skumm ut?
Cn.Execute("INSERT INTO din_tabell (vem,vemsid,team,slogan,level,antal,datum) Values('" & Fix(session("user")) & "','" & Fix(session("id")) & "','" & Fix(request.form("team")) & "','" & Fix(request.form("slogan")) & "',level="newbie",antal="1",datum=Now())")
Skulle jag ändra till
Cn.Execute("INSERT INTO din_tabell (vem,vemsid,team,slogan,level,antal,datum) Values('" & Fix(session("user")) & "','" & Fix(session("id")) & "','" & Fix(request.form("team")) & "','" & Fix(request.form("slogan")) & "', '"newbie"' , '"1"' , #"Now()"#)")
Fast jag är ju ingen höjdare på SQL.
Din SQL-kod fungerar nog bättre, jag skrev ju att min hjärna inte var i topptrim idag, speciellt inte när man ska koda heller.. *Redigerar min kod*
Å andra sida fungerar mitt Now() lika bra som ditt, tror jag i alla fall.