10. september 2004 - 11:24Der er
168 kommentarer og 1 løsning
Gætte resultat på fodboldkamp SCRIPT
Hej Alle
Jeg er blevet stillet overfor en spændende ASP-opgave, som jeg godt kunne tænke mig lidt hjælp til.
På vores fodboldafdelingshjemmeside, skal det være muligt at gætte resultatet af ugens kamp og hvis man gætter rigtigt, skal man så få nogle point. Man skal angive sit navn (+ evt. kode/email) således at man uge efter uge, kan gå ind og tippe på ugens kamp.
Jeg forestiller mig arbejdsgangens vil være således:
1. Lave DB der indeholder alle kampe. 2. Fremvise disse kampe på en side.
3. Bruger skal logge sig ind (registreres i DB). 4. Skal kunne klikke på den kamp han ønsker at gætte resultat på. 5. Angive sit gæt som gemmes.
6. Ved bestemt klokkeslæt (kampstart), skal det ikke længere være muligt at gætte.
7. Efter kampen angiver administrator det rigtige resultat i DB.
8. "Systemet" tjecker om nogen har vundet og tildeler i givet fald disse brugere 1 point.
9. En High-Score liste kan fremkaldes, så man kan se de bedste "gættere"
Jeg syntes selv det er en fremragende idé - Tror I der er noget jeg har glemt i ovenstående arbejdsproces ?? Ellers vil jeg til at kaste mig ud i det, forhåbentlig med lidt hjælp fra jer....Er der nogen hajer der vil hjælpe ;-) ??
Jeg er ikke en ørn til ASP, men tror I ikke det er muligt aligevel ?? - Eller skal jeg betale mig fra det ??
Hvad siger I ?? - Syntes I ikke det lyder som en spændende opgave. Hvis jeg kan få den lavet færdig, kan jeg ud over selv at bruge den, forære scriptet til alle andre fodboldklubber - som så også kan bruge den på deres side.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Tak. Sådan, så tror jeg DB er klar. Nu laver jeg en .asp side, som henter og viser de indlagte kampe. Ud for hver kamp vil jeg så lave et link man kan trykke på. Her skal man så kunne angive navn+kode samt resultatet -> som så bliver lagret i DB'en..
Du kan jo starte på den måde (simpelt). Senere kan du så lave et login system, hvor den enkelte bruger kan se sine kampe, og evt ændre sine gæt. Men start simpel, så det kommer til at virke.
Du skal bruge lidt avanceret SQL-sætninger til at trække point ud, men jeg har lavet et par eks til dig.
Topliste: SELECT bruger.navn, count(*) as point FROM bruger, brugerGaet, Kampe where bruger.id = brugerGaet.brugerid and brugerGaet.kampId = Kampe.id and Kampe.resultat1 = brugerGaet.resultat1 and Kampe.resultat2 = brugerGaet.resultat2 group by bruger.navn order by count(*) desc
Så får du navne med point sorteret i faldende orden
Næsten den samme bruges hvis du vil have point for en enkelt bruger. Der skal bare et bruger id med som betingelse, også behøver vi ikke bruger navnet.
SELECT count(*) as point FROM brugerGaet, Kampe where brugerGaet.kampId = Kampe.id and Kampe.resultat1 = brugerGaet.resultat1 and Kampe.resultat2 = brugerGaet.resultat2 and brugerGaet.brugerid = 1
En lille bemærkning. Det er vigtigt at resultaterne i Kampe er NULL (tom) hvis kampen ikke er spillet. De må ikke være 0. Ellers får brugere point hvis de gætter på et 0-0 resultat, selv om kampen ikke er spillet endnu. Det er derfor jeg satte default værdien til NULL. Så nu ved du hvorfor....
Bare sig til hvis du løber på problemer. Jeg smutter snart, men jeg skal nok holde øje med ? i weekenden.
Tak Tak Tak - Håber du overlever mit ikke så hurtige asp tasteri
Ja, jeg vender tilbage i week-end'en og nok også senere... ;-) Tak for det.
Lige nu har jeg fået oversigten frem og skal så lave siden, som skal linke sammen med den aktuelle kamp - og hvor man så angiver sit resultat, der bliver knyttet til ens navn samt den valgte kamp.
Woww.. det bliver vist en lang week-end -> Hvordan er det lige jeg tilknytter et link til en bestemt kamp, således at jeg kan indtaste gættet samt eget navn ??
Jeg kan ikke lige få det til at funge... Jeg skal nok lige have et par hints....
Så længe du holder det simpelt, ville jeg gøre sådan:
<% if request.querystring("mode") = "save" then conn.execute("insert into brugerGaet(brugerid,kampId,resultat1,resultat2) values("& request.form("BrugerID") &","& request.form("KampID") &","& request.form("res1") &","& request.form("res2") &")") response.redirect("Denneside.asp") end if %> <form name="MyForm" method="post" action="denneSide.asp?mode=save"> Bruger: <select name="BrugerID"> <% set rs = conn.execute("select * from brugere order by name") do while not rs.eof %> <option value="<%= rs("id")%>"><%= rs("name") %> <% rs.MoveNext loop %> </select> <br> Kamp: <select name="KampID"> <% set rs = conn.execute("select * from kampe order by start") do while not rs.eof %> <option value="<%= rs("id")%>"><%= rs("kamp") %> <% rs.MoveNext loop %> </select> <br> resultat: <input type="text" name="res1"> - <input type="text" name="res2"> <input type="submit" value="gem"> </form>
Når du så engang får lavet et login system, hvor du gemmer brugerens id i en session, udskifter du bare <select name="brugerid"> med et hidden felt af samme navn med session id'et som value.
Hej Fennec og jer andre.... Min start.asp side er blot lavet for at samle alle de forskellige scripts jeg laver.... Ja Ja, jeg ved godt det ikke er noget særligt. Men jeg syntes det er meget fint at få dem samlet.
Jeg syntes jeg kan fornemme, at dette resultatscript bare bliver rigtig godt...Layout og alt det andet, det skal jeg nok selv rode med ;-)
Vedrørende brugerens forside, så kan man nu trykke på det nederste link ("Gæt resultat, men ved klik på enkelt kamp"). Har har jeg fået styr på, at sende selve kampens id videre, men jeg har lidt problemer med at få det vist på gætte siden, i stedet for den tidligere "Select" boks.... (det er garanteret intet problem at løse for jer...)
Mit script ser således ud: <!--#include file="resultatconnection.asp"--> <html><head> <h2>Gæt resultatet af en kamp:<br><br></h2> </head> <body> <% if request.querystring("mode") = "save" then conn.execute("insert into brugerGaet(brugerid,kampid,resultat1,resultat2) values("& request.form("brugerid") &","& request.form("kampid") &","& request.form("res1") &","& request.form("res2") &")") response.redirect("denneside.asp") end if %> <form name="MyForm" method="post" action="denneside2.asp?mode=save"> Bruger: <select name="brugerid"> <% set rs = conn.execute("select * from bruger order by navn") do while not rs.eof %> <option value="<%= rs("id")%>"><%= rs("navn") %> <% rs.MoveNext loop %> </select> <br> Kamp: <% strID = Request.QueryString("id") strSQL = "Select * From kampe where id = strID" Set rs = Conn.Execute(strSQL) %> <br> resultat: <input type="text" name="res1"> - <input type="text" name="res2"> <input type="submit" value="gem"> </form> </body> </html>
Jeg havde også en del problemer, da jeg skulle lave siden, der viste alle de "gættede" resultater - der blev jeg nødt til at lave en "Forespørgsel" i Access med blanding af de andre tabeller. Det var noget være roderi, men jeg tror det lykkedes til sidst - se mit eksempel.
Men hvad siger du - Er det måden at gøre det på ???
Endnu engang tak for opmærksomheden og fortsat god dag / aften... ;-)
Jeg skal jo også lige have skrevet kampen ud, er det ikke: Kamp: <% strID = Request.QueryString("id") strSQL = "Select * From kampe where id = "& strID Response.Write ID("kamp") Set rs = Conn.Execute(strSQL) %>
Hmmmm...Det er det ikke. Det er en eller anden Response.Write funktion, men min konstant er vist forkert......
<% strID = Request.QueryString("id") strSQL = "Select * From kampe where id = "& strID Set rs = Conn.Execute(strSQL) if not rs.eof then %> <input type="hidden" name="KampID" value="<%= rs("id") %>"><%= rs("kamp") %> <% end if %>
så gemme vi også KampID'et i et hidden felt i stedet for at bruge en selectbox.
Du kan jo begynde på et login script, og begynde at bruge login-informationerne i stedet for bruger-dropdown. Du får nu et par sider, hvor man skal være logget ind, for at man må kunne se dem (f.eks gæt siden). Med en simpel include fil kan du sende folk til forsiden, hvis de ikke er logget ind. Den smider du så på alle sider, hvor det er aktuel.
CheckLogin.asp: <% if trim(session("BrugerID")&"") = "" then response.redirect("DinForside.asp?errKode=1") response.end end if %>
Jeg har også sendt en errKode med så du har mulighed for at fortælle brugeren hvad der er galt.
if request.querystring("errKode") = "1" then response.write "Du er ikke logget ind" elseif request.querystring("errKode") = "2" then 'En anden fejl-besked end if
Arh !!! Nu har jeg siddet og fedtet med det her Log-In script i 100 år.... Jeg kan ikke få det til at virke...
MEN - Jeg vil gerne bruge din hjælp til noget af det mere svære/vigtige - så jeg opretter lige et lille spørgsmål med mine login problemer. Jeg vender tilbage når jeg har fået styr på det.
Jeg mener: Det skal vel være således, at hvis man vil gætte på et resultat, klikker man på: "Gæt" og hvis man så ikke er logget ind, skal man til login siden og hvis man allerede er logget ind, skal man bare direkte til "Gætresultat" siden !!
Jeg har set kommentaren fra dig: Når du så engang får lavet et login system, hvor du gemmer brugerens id i en session, udskifter du bare <select name="brugerid"> med et hidden felt af samme navn med session id'et som value.
Men hvad så i LogIn scriptet's CheckLogin.asp side ???
Det er altså svært....Hmm - Håber du har tid... ;-)
brugernavn: oleolsen3 password : kode3 Virker ikke :( så jeg ved ikke om der alligevel er en fejl? (Hentede din DB og kiggede på brugernavnene ;))
Hvis man under indtastning af målscore undlader at indtaste i et eller begge felter og trykker send får du en fejl. Måske du skal sikre dig imod dette?
Kære Højben - Siderne er oppe nu på det niveau jeg kan. Jeg venter på Fennec's svar på mine ovenstående spørgsmål, før jeg går videre... Hav en God Dag
Emma, det var såmænd ikke ment som kritik og jeg tar da absulut også hatten af for dig at du går i gang med at programmere i ASP (selv synes jeg det er ret tricky)
Og mine kommentarer er kun til fremtidigt brug.. :)
Jeg gå ud fra at det er "Gæt resultat, men ved klik på enkelt kamp" (denneside2.asp) du vil arbejde vidre med. Du skal altså have din CheckLogin.asp includeret i toppen af siden. Du kan evt også have den på viskampeplus2.asp, så man bliver advaret tidligere, om at man skal logge ind.
Ellers skal du bare udskifte din dropdown med et hiddenfelt:
Bruger: <select name="brugerid"> <% set rs = conn.execute("select * from bruger order by navn") do while not rs.eof %> <option value="<%= rs("id")%>"><%= rs("navn") %> <% rs.MoveNext loop %> </select>
Bliver så til: Bruger: <%= session("Brugernavn") %> <input type="hidden" name="brugerid" value="<%= session("BrugerID") %>">
Hvis du ikke gemmer brugernavnet i en session kan det selvfølgelig også trækkes ud af databasen.
Endnu engang perfekt.Alt virker. MEN - SE LIGE DETTE: Når man vil gætte, skal man først forbi Login siden. CheckLogin.asp: ................... <%@ Language=VBScript %> <% response.buffer = true %> <HTML> <HEAD></HEAD> <BODY> <% set objForb = Server.createobject ("ADODB.connection") tmpconn = "Driver={Microsoft Access Driver (*.MDB)}; DBQ=D:\Websider\resadmin\db\resultat.mdb;UID=;PWD=;" objForb.open tmpconn %> <% navn = Ucase(Request("navn")) adgangskode = Ucase(Request("adgangskode"))
Dim strSql, obj
set objRec = objForb.Execute ("SELECT * FROM bruger WHERE navn ='" & navn & "' AND adgangskode = '" & adgangskode &"'")
IF objRec.EOF THEN Session("loginerr")="Forkert brugernavn eller adgangskode<br>" Response.Redirect "login.asp" ELSE Session.timeout = 20 Session("login") = TRUE Session("level") = objRec("level") Session("BrugerID") = objRec("id") Session("BrugerNavn") = objRec("navn")
END IF
if objRec("level") = "1" then Response.Redirect "side1.asp" end if if objRec("level") = "2" then Response.Redirect "side2.asp"
else Response.Redirect "side4.asp" end if
objRec.close objForb.close set objRec = Nothing set objForb = Nothing %> </BODY> </HTML> ....................... Her skal linket til side1.asp jo også ændres, så ens bruger tages med - ikke ??
Alle kampe vises, der kan klikkes på kamp hvis man vil gætte. I toppen er angivet, om man er logget ind eller ej. Ønsker man at gætte, SKAL man forbi Log-In siden.
Hvad siger I - I må meget gerne teste løs.....
Ser det ikke fint ud Fennec ? - Hvad syntes du som rådgiver vi skal nu ?? - er det scriptet til at give brugerne point ?? Kunne det være godt, hvis jeg samlede det hele i en zip fil ??
Til Hojben: Min bemærkning var skam ikke ment negativt - du er meget velkommen til at følge med og teste løs....Måske kan vi, i den sidste ende få lavet scriptet så godt, at mange andre fodboldklubber vil kunne få glæde af det....
Jeg er blot dybt taknemmelig for Hr. Fennec's hjælp, for det er vist i den kommende proces at jeg står af.....
Det ser fint ud, men man kan "hacke" dit login. Ofte kan man gætte navne på kolonnerne i databasen, og det giver visse muligheder for at få adgang, hvis man ikke spærre for brugen af ' tegnet.
prøv f.eks dette login: navn: ' or navn like '&& pass: ' or adgangskode like '%%
Du kan dig nemt løse problemet, ved at udskifte ' med ''. Så opfatter databasen det ikke som tekstafslutning, men som et ' i teksten.
navn = replace(Ucase(Request("navn")),"'","''") adgangskode = replace(Ucase(Request("adgangskode")),"'","''")
Til at finde en brugers point / top liste har jeg givet dig 2 sql-sætninger i post "10/09-2004 12:31:40", men her er en fuld kode til topliste. Du kan evt smide "select TOP 10 bruger.navn....." ind, så du kun får de bedste 10 brugere.
topliste: set rs = conn.execute("SELECT bruger.navn, count(*) as point FROM bruger, brugerGaet, Kampe where bruger.id = brugerGaet.brugerid and brugerGaet.kampId = Kampe.id and Kampe.resultat1 = brugerGaet.resultat1 and Kampe.resultat2 = brugerGaet.resultat2 group by bruger.navn order by count(*) desc ") counter = 1 response.write "<table>" do while not rs.eof response.write "<tr><td>"& counter &"</td><td>"& rs("point") &"</td><td>"& rs("navn") &"</td></tr>" counter = counter + 1 rs.MoveNext loop response.write "</table>"
Jamen, jeg er målløs... Jeg troede det ville være helt vildt indviklet med at udregne highscoreliste... ;-) Men perfekt - Link er indsat på http://www.asgi.dk/fodbold/resultat/start.asp
Bemærkning: Er det for svært at lave det således, at det giver 1 point, hvis man har gættet én af målcifrene og 3 point hvis man har gættet begge målcifre ?? (Det tror jeg vil være bedre, da flere vil få lidt point og dem der virkelig kan gætte det helt rigtige resultat, bliver belønnet med 3 point )
Det er bare supergodt ;-)
PS: Loginscript er rettet og en TopTi liste kommer til sidst under "smukseringen"
Jeg prøver lige at kikke på det med point. Det bliver lidt mere indviklet, men jeg har da en ide til hvordan det kan løses, så vender jeg tilbage når jeg har afprøvet den, hvis den da virker :o)
select bruger.id, bruger.navn, sum(point) as pointTot from ( SELECT 'a' as temp, bruger.id, bruger.navn, count(*) as point FROM bruger, b2k, Kamp where bruger.id = b2k.bid and b2k.kid = Kamp.id and Kamp.res1 = b2k.res1 group by bruger.id, bruger.navn union SELECT 'b' as temp, bruger.id, bruger.navn, count(*) as point FROM bruger, b2k, Kamp where bruger.id = b2k.bid and b2k.kid = Kamp.id and Kamp.res2 = b2k.res2 group by bruger.id, bruger.navn union SELECT 'c' as temp, bruger.id, bruger.navn, count(*) as point FROM bruger, b2k, Kamp where bruger.id = b2k.bid and b2k.kid = Kamp.id and Kamp.res1 = b2k.res1 and Kamp.res2 = b2k.res2 group by bruger.id, bruger.navn)
For læslighedens skyld, var det måske en ide at indsætte det i en variabel først. Også glemte jeg at rette tabel navne/kolonner til.
sql = "select bruger.id, bruger.navn, sum(point) as pointTot from " &_ "("&_ "SELECT 'a' as temp, bruger.id, bruger.navn, count(*) as point "&_ "FROM bruger, brugerGaet, Kampe "&_ "where bruger.id = brugerGaet.brugerID and brugerGaet.kampid = Kampe.id and Kampe.resultat1 = brugerGaet.resultat1 "&_ "group by bruger.id, bruger.navn "&_ "union "&_ "SELECT 'b' as temp, bruger.id, bruger.navn, count(*) as point "&_ "FROM bruger, brugerGaet, Kampe "&_ "where bruger.id = brugerGaet.brugerID and brugerGaet.kampid = Kampe.id and Kampe.resultat2 = brugerGaet.resultat2 "&_ "group by bruger.id, bruger.navn "&_ "union "&_ "SELECT 'c' as temp, bruger.id, bruger.navn, count(*) as point "&_ "FROM bruger, brugerGaet, Kampe "&_ "where bruger.id = brugerGaet.brugerID and brugerGaet.kampid = Kampe.id and Kampe.resultat1 = brugerGaet.resultat1 and Kampe.resultat2 = brugerGaet.resultat2 "&_ "group by bruger.id, bruger.navn) "&_ "group by id, navn "&_ "order by sum(point) desc" set rs = conn.execute(sql) do while not rs.eof 'udskriv resultaterne.... rs.MoveNext loop
Øhh - Har jeg lavet en fejl. Jeg kan ikke få den til at funge ;-)
TOPLISTE.ASP ......>
<!--#include file="resultatconnection.asp"--> <html><head> <br><h2>High-Score liste</h2> <i>Der gives 1 point for at have gættet det rigtige resultat</i><br><br> </head> <body>
<% sql = "select bruger.id, bruger.navn, sum(point) as pointTot from " &_ "("&_ "SELECT 'a' as temp, bruger.id, bruger.navn, count(*) as point "&_ "FROM bruger, brugerGaet, Kampe "&_ "where bruger.id = brugerGaet.brugerID and brugerGaet.kampid = Kampe.id and Kampe.resultat1 = brugerGaet.resultat1 "&_ "group by bruger.id, bruger.navn "&_ "union "&_ "SELECT 'b' as temp, bruger.id, bruger.navn, count(*) as point "&_ "FROM bruger, brugerGaet, Kampe "&_ "where bruger.id = brugerGaet.brugerID and brugerGaet.kampid = Kampe.id and Kampe.resultat2 = brugerGaet.resultat2 "&_ "group by bruger.id, bruger.navn "&_ "union "&_ "SELECT 'c' as temp, bruger.id, bruger.navn, count(*) as point "&_ "FROM bruger, brugerGaet, Kampe "&_ "where bruger.id = brugerGaet.brugerID and brugerGaet.kampid = Kampe.id and Kampe.resultat1 = brugerGaet.resultat1 and Kampe.resultat2 = brugerGaet.resultat2 "&_ "group by bruger.id, bruger.navn) "&_ "group by id, navn "&_ "order by sum(point) desc" set rs = conn.execute(sql) do while not rs.eof
Hej Fennec OK - Det burde jeg måske have set...Jeg retter lige om lidt.
Før jeg skal i gang med finpudsningen, er det sidste store problem vel: Funktionen vedr. "Gætning" kontra "Kampstart" -> Jeg mener, man skal kunne gætte på resultat frem til kampstart og derefter skal det ikke længere være muligt - man skal have en meddelse.
Hvad siger du ? - Er det en tidsrøver ???
..:: Foreløbig Tak for Alt og fortsat god dag ;-) ::..
Den er ikke så svær. For det første kan du starte med at kun vise aktuelle kampe på viskampeplus2.asp siden
"select * from kampe where start > now() order by start"
Derefter (som en sikkerhed) tjekke tiden inden du gemme resultatet
set rs = conn.Execute("select * from kampe where start>now() and id="& request.form("kampID")) if not rs.eof then conn.execute("insert into brugerGaet(..) values(....)") else 'Kampen er begyndt end if
Der burde du måske også tjekke om man har gættet på kampen før.
Selvfølgelig - Det er jo helt genialt !! ....Det havde jeg slet ikke tænkt på. Selvfølgelig skal man kun se de kampe man KAN spille på - og rigtigt, godt med et tjeck under selve gemme-rutinen ;-)
Men det er dér, den lige driller. Er det ikke i min denneside2.asp fil, jeg skal erstatte nedenstående:
<% strID = Request.QueryString("id") strSQL = "Select * From kampe where id = "& strID Set rs = Conn.Execute(strSQL) if not rs.eof then %> <input type="hidden" name="KampID" value="<%= rs("id") %>"><%= rs("kamp") %> <% end if %>
jeg skal erstatte med:
<% strID = Request.QueryString("id") set rs = conn.Execute("select * from kampe where start>now() and id="& request.form("kampID")) if not rs.eof then conn.execute("insert into brugerGaet(..) values(....)") else 'Kampen er begyndt Response.Write ("Desværre - Kampen er begyndt") end if %>
Til orientering ser hele den originale "denneside2.asp" fil således ud:
<% response.buffer=true if not Session("login") then response.redirect ("login/login.asp") end if %> <!--#include file="resultatconnection.asp"-->
<html><head> <h2>Gæt resultatet af en kamp:<br><br></h2> </head> <body> <% if request.querystring("mode") = "save" then conn.execute("insert into brugerGaet(brugerid,kampid,resultat1,resultat2) values("& request.form("brugerid") &","& request.form("kampid") &","& request.form("res1") &","& request.form("res2") &")") response.redirect("visgaet.asp") end if %> <form name="MyForm" method="post" action="denneside2.asp?mode=save">
<% strID = Request.QueryString("id") strSQL = "Select * From kampe where id = "& strID Set rs = Conn.Execute(strSQL) if not rs.eof then %> <input type="hidden" name="KampID" value="<%= rs("id") %>"><%= rs("kamp") %> <% end if %> <br>
Det er den side, men det er ikke der. Det du skal tjekke er at en person ikke går ind på siden inden kampen er begynder, også venter med at skrive sit resultat til kampen er slut. Derfor skal du lave tjekket når du gemmer resultatet.
if request.querystring("mode") = "save" then set rs = conn.Execute("select * from kampe where start>now() and id="& request.form("kampID")) if not rs.eof then conn.execute("insert into brugerGaet(brugerid,kampid,resultat1,resultat2) values("& request.form("brugerid") &","& request.form("kampid") &","& request.form("res1") &","& request.form("res2") &")") response.redirect("visgaet.asp") else 'Kampen er begyndt Response.Write ("Desværre - Du nåede ikke at gætte inden kampen begyndte") end if end if
Godmorgen Fennec JA - Selvfølgelig. Det er klart, jeg har fundet ud af hvordan det hænger sammen og hvor rettelsen skal være. Smukt.
Er du ikke enig med mig i, at man kun skal kunne gætte engang pr. kamp ? Kunne det ikke være praktisk, at hvis man klikker på en kamp for at gætte, får man besked om, at man allerede HAR gættet, men - man kan vælge at rette resultatet.
1. Du burde vise en liste af en brugers gæt så han kan se dem. Her kan han så rette sine gæt, hvis kampen ikke er begyndt (burde næsten bare være et link til denneside2.asp som det er på viskampeplus2.asp). Man skal nok kunne se sine gæt uanset hvad, samt evt resultat af kampen. Lidt ala din "vis alle gæt.." men kun brugerens egne gæt.
2. Du skal gøre opmærksom på at en bruger allerede har gættet på en kamp, når han kommer ind på denneside2.asp også indsætte det gamle gæt's resultat. Når du så gemmer, tjekker du om brugeren har gættet på kampen før, og overskriver et evt resultat. Der kan du bruge en update/insert syntax.
rowsAffected = 0 'updater et evt eksisterende gæt. conn.execute("update brugerGaet set resultat1="& request.form("res1") &" and resultat2="& request.form("res2") &" where BrugerID="& request.form("brugerid") &" and KampID="& request.form("kampid") , rowsAffected) if rowsAffected = 0 then 'Brugeren har ikke gættet på kampen før. conn.execute("insert into brugerGaet(brugerid,kampid,resultat1,resultat2) values("& request.form("brugerid") &","& request.form("kampid") &","& request.form("res1") &","& request.form("res2") &")") end if
Her gør jeg brug af muligheden for at få returneret et tal, for hvor mange rækker, der blev berørt af updaten. Hvis brugeren ikke gættet på en kamp, vil updaten ikke berøre nogle rækker og rowsAffected vil stadig være 0, ellers ville den svare til antalet af rækker der er berørt.
<html> <title>Gæt et resultat</title> <head></head> <body> <h2>Oversigt over gæt der er foretaget af én person.</h2><br><br>
<% if Session("brugernavn")<>"" Then Response.Write("Du er logget ind som: " & Session("brugernavn")) Response.Write "<br><br>" else Response.Write("Du er ikke logget ind") Response.Write "<br><br>"
end if
strSQL = "Select * From forespoergselallegaet WHERE navn= Session("brugernavn") Set rs = Conn.Execute(strSQL)
Det virker ikke, selvom det burde. - Først kontrol af om man er logget ind. - Derefter SELECT alt med den eksakte bruger. - Til sidst en normal udskrift.
Hmmmm.. Kan du hjælpe ? (har prøvet en del fors. SELECT muligheder) ;-(
- bagefter skal der vel ændres, så færdige kampe ses og kommende kampe tilføjes et link, så man kan rette gæt....
Kan det laves uden om min sikkert dårlig lavede forespørgsel i databasen.... (Den prøvede jeg jo at lave dengang jeg skulle samle kampe og gættede resultater)
Hej Den siger: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in JOIN operation. /fodbold/resultat/visbrugersgaet.asp, line 22
På følgende visbrugersgaet.asp fil:
<!--#include file="logincheck.inc" --> <!--#include file="resultatconnection.asp"--> <html> <title>Gæt et resultat</title> <head></head> <body> <h2>Oversigt over gæt der er foretaget af én person.</h2><br><br> <% if Session("brugernavn")<>"" Then Response.Write("Du er logget ind som: " & Session("brugernavn")) Response.Write "<br><br>" else Response.Write("Du er ikke logget ind") Response.Write "<br><br>" end if strSQL = "select Kampe.*, brugerGaet.resultat1 as gaet1, brugerGaet.resultat2 as gaet2 from (Kampe inner join brugerGaet on Kampe.id=brugerGaet.KampID where brugerGaet.brugerid="& session("brugerID") Set rs = Conn.Execute(strSQL) do while not rs.eof response.write "kamp: "& rs("kamp") &"<br>" response.write "resultat: "& rs("resultat1") &" - "& rs("resultat2") &"<br>" response.write "Gæt: "& rs("gaet1") &" - "& rs("gaet2") &"<br><br>" rs.MoveNext loop Conn.Close Set Conn = Nothing %> </body> </html>
-> Jeg håber du har tid til at finde fejlen.. ;-)
Jeg skal desværre til konference nu, så jeg er først tilbage i aften sent.....
Du er velkommen til at skrive forskellige løsninger/idéer - på de udestående problemer/løsninger....
Hav en god dag - Jeg glæder mig til at logge ind i aften ;-) (du må også gerne, hvis du har tid, komme med forslag til hvordan listen ændres, så færdige kampe ses og kommende kampe tilføjes et link, så man kan rette ens gæt.... )
strSQL = "select Kampe.*, brugerGaet.resultat1 as gaet1, brugerGaet.resultat2 as gaet2 from (Kampe inner join brugerGaet on Kampe.id=brugerGaet.KampID) where brugerGaet.brugerid="& session("brugerID")
Jeg er tilbage og har nu siddet og fået ordnet "visbrugersgaet.asp" siden, så den kun viser gættene på den bruger der er logget ind. Helt Fint, det virker.
Nu til den anden side (denneside2.asp) - Den ser ud til at virke, MEN: 1. Når man overskriver med et nyt resultat, skriver den noget andet i databasen...(f.eks blev 6-6 til 0-5 ???) Prøv lige selv... 2. Så skulle den vel også lige gøre opmærksom på, med en besked om, at man havde gættet tidligere og så samtidig skrive ens tidligere gæt i de to resultatfelter, ikke ??
Kan du hjælpe med det ?? Jeg kan altså ikke.... ;-) Det er nedenstående der nok skal tilrettes lidt:
DENNESIDE2.ASP <!--#include file="logincheck.inc" --> <!--#include file="resultatconnection.asp"--> <html><head> <h2>Gæt resultatet af en kamp:<br><br></h2> </head><body>
<% 'Herunder: Der tjeckes om kamptidspunktet er afviklet if request.querystring("mode") = "save" then set rs = conn.Execute("select * from kampe where start>now() and id="& request.form("kampID")) if not rs.eof then
rowsAffected = 0 'updater et evt eksisterende gæt. conn.execute "update brugerGaet set resultat1="& request.form("res1") &" and resultat2="& request.form("res2") &" where BrugerID="& request.form("brugerid") &" and KampID="& request.form("kampid") , rowsAffected if rowsAffected = 0 then 'Brugeren har ikke gættet på kampen før. conn.execute("insert into brugerGaet(brugerid,kampid,resultat1,resultat2) values("& request.form("brugerid") &","& request.form("kampid") &","& request.form("res1") &","& request.form("res2") &")") end if
response.redirect("visgaet.asp")
else 'Kampen er begyndt Response.Write ("Desværre - Du nåede ikke at gætte inden kampen begyndte") end if end if %> <form name="MyForm" method="post" action="denneside2.asp?mode=save">
<% strID = Request.QueryString("id") strSQL = "Select * From kampe where id = "& strID Set rs = Conn.Execute(strSQL) if not rs.eof then %> <input type="hidden" name="KampID" value="<%= rs("id") %>"><%= rs("kamp") %> <% end if %> <br>Resultat: <input type="text" name="res1"> - <input type="text" name="res2"> <input type="submit" value="gem"> </form> </body></html>
....og endnu engang: Tak for al din fantastiske hjælp ;-)
Min fejl... Nu kan jeg ikke engang lave en rigtig update sætning længere :o)
Brug denne i stedet: conn.execute "update brugerGaet set resultat1="& request.form("res1") &", resultat2="& request.form("res2") &" where BrugerID="& request.form("brugerid") &" and KampID="& request.form("kampid") , rowsAffected
Sådan her tjekker du om en bruger har gættet før, og indsætter gættet: <% res1 = 0 res2 = 0 strID = Request.QueryString("id") strSQL = "Select * From kampe where id = "& strID Set rs = Conn.Execute(strSQL) if not rs.eof then %> <input type="hidden" name="KampID" value="<%= rs("id") %>"><%= rs("kamp") %> <% set rs1 = conn.execute("select * from brugergaet where BrugerID="& session("BrugerID") &" and KampID="& rs("kamp")) if not rs1.eof then Response.write "<br>Du har gættet på resultatet før." res1 = rs1("resultat1") res2 = rs1("resultat2") end if end if %> <br>Resultat: <input type="text" name="res1" size="4" value="<%= res1 %>"> - <input type="text" name="res2" size="4" value="<%= res2 %>">
Det virker fint, men nu har jeg siddet og rodet - og der bliver ved med at komme fejlmeddelser - og jeg syntes de er forskellige ?? Er det måske fordi der er gættet på kampen tidligere eller ej ?? Hmm... **** Fejlmeddelser: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'BrugerID=5 and KampID=Manchester United - Arsenal'. **** Eller denne: Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.
Jeg kan altså ikke rette dem !! Har du en god idé ?? ;-)
¤¤¤¤ denneside2.asp se således ud nu: <!--#include file="logincheck.inc" --> <!--#include file="resultatconnection.asp"--> <html><head> <h2>Gæt resultatet af en kamp:<br><br></h2> </head> <body>
<% 'Herunder: Der tjeckes om kamptidspunktet er afviklet if request.querystring("mode") = "save" then set rs = conn.Execute("select * from kampe where start>now() and id="& request.form("kampID")) if not rs.eof then
rowsAffected = 0 'updater et evt eksisterende gæt. conn.execute "update brugerGaet set resultat1="& request.form("res1") &", resultat2="& request.form("res2") &" where BrugerID="& request.form("brugerid") &" and KampID="& request.form("kampid") , rowsAffected if rowsAffected = 0 then 'Brugeren har ikke gættet på kampen før. conn.execute("insert into brugerGaet(brugerid,kampid,resultat1,resultat2) values("& request.form("brugerid") &","& request.form("kampid") &","& request.form("res1") &","& request.form("res2") &")") end if
response.redirect("visgaet.asp")
else 'Kampen er begyndt Response.Write ("Desværre - Du nåede ikke at gætte inden kampen begyndte") end if end if %> <form name="MyForm" method="post" action="denneside2.asp?mode=save">
<% 'Sådan her tjekker du om en bruger har gættet før, og indsætter gæt res1 = 0 res2 = 0 strID = Request.QueryString("id") strSQL = "Select * From kampe where id = "& strID Set rs = Conn.Execute(strSQL) if not rs.eof then %> <input type="hidden" name="KampID" value="<%= rs("id") %>"><%= rs("kamp") %> <% set rs1 = conn.execute("select * from brugergaet where BrugerID="& session("BrugerID") &" and KampID="& rs("kamp")) if not rs1.eof then Response.write "<br>Du har gættet på resultatet før." res1 = rs1("resultat1") res2 = rs1("resultat2") end if end if %> <br>Resultat: <input type="text" name="res1" size="4" value="<%= res1 %>"> - <input type="text" name="res2" size="4" value="<%= res2 %>">
På listen over hvilke kampe man har stemt på (når man er logget ind) ses resultatet 0-0, selvom kampen ikke er spillet !!! (ved de allerede gennemførte kampe står det fint nok)
Kan det laves således, at de kampe der endnu ikke er spillet, skrives der "Kampen er ikke spillet" i stedet for, som nu; "0-0" ??
Håber du kan finde en løsning - Hav en god dag.
**** VISBRUGERSGAET.ASP <!--#include file="logincheck.inc" --> <!--#include file="resultatconnection.asp"--> <html> <title>Gæt et resultat</title> <head></head> <body> <h2>Oversigt over gæt der er foretaget af én person.</h2><br><br> <% if Session("brugernavn")<>"" Then Response.Write("Du er logget ind som: " & Session("brugernavn")) Response.Write "<br><br>" else Response.Write("Du er ikke logget ind") Response.Write "<br><br>" end if strSQL = "select Kampe.*, brugerGaet.resultat1 as gaet1, brugerGaet.resultat2 as gaet2 from (Kampe inner join brugerGaet on Kampe.id=brugerGaet.KampID) where brugerGaet.brugerid="& session("brugerID") Set rs = Conn.Execute(strSQL) do while not rs.eof response.write "kamp: "& rs("kamp") &"<br>" response.write "resultat: "& rs("resultat1") &" - "& rs("resultat2") &"<br>" response.write "Gæt: "& rs("gaet1") &" - "& rs("gaet2") &"<br><br>" rs.MoveNext loop Conn.Close Set Conn = Nothing %> </body></html>
do while not rs.eof response.write "kamp: "& rs("kamp") &"<br>" if rs("resultat1") = "" then response.write "resultat: Kamp ikke spillet endnu<br>" else response.write "resultat: "& rs("resultat1") &" - "& rs("resultat2") &"<br>" end if response.write "Gæt: "& rs("gaet1") &" - "& rs("gaet2") &"<br><br>" rs.MoveNext loop
Men du har fået gemt 0-0 som resultatet på en ikke spillet kamp (det kan jeg se i databasen). Det skal være NULL, ellers virker det ikke, og man får også point hvis man gætter på 0-0 som resultat.
For lige at være helt sikker: Inde i Access databasen skal jeg ud for standardværdi for resultat1 og resultat2 angive: NULL (Tidligere havde jeg bare som standardværdi skrevet 0)
Godaften Fennec - eller Godmorgen. Du kommer nok ikke mere på her til aften ;-)
Et lille spørgsmål mere: Vil du hjælpe med at lave en admin side, hvor man indtaster det korrekte resultat, når kampen er færdigspillet. Det kan jeg ikke finde ud af, fordi det konflikter jo med flere tabeller, og min "gamle" forespørgsel, var jo ikke så god !!!
I din kampe tabel er der nogle kampe, som ikke er spillet endnu, hvor resultatet er angivet til 0-0. Prøv f.eks at se den kamp jeg har oprettet. Der er ikke noget resultat NULL-NULL (tom), mens "Hold 1 mod Hold 2" kampen er resultatet 0-0. Det skal være NULL.
Prøv også at ændre denne: if rs("resultat1") = "" then
til if trim(rs("resultat1")&"") = "" then
Du skal bare indsætte resultatet på en kamp, så resultatet ikke er NULL længre, mere er der ikke i det.
<% if request.querystring("mode") = "save" then conn.execute("update kampe set resultat1="& request.form("res1") &", resultat2="& request.form("res2") &" where id="& request.form("kampID")) end if %> <form action="DenneAdminSide.asp?mode=save" method="post"> <select name="KampID"> <% set rs = conn.execute("select * from kampe") do while not rs.eof response.write "<option value="""& rs("id") &""">"& rs("kamp") rs.MoveNext loop %> </select> <input type="text" size="4" name="res1"> - <input type="text" size="4" name="res2"> <input type="submit" value="Gem"> </form>
**** Vedr.: denneadminside.asp Lille rettelse: Kunne man ikke gøre således, at det kun var de kampe der IKKE havde fået angivet noget resultat, der fremkom i drilldown menu'en ?? - og kan man samtidig få drilldown menu'en til at angive kampene i dato orden - så den tidligste kamp står øverst ???
Er du enig ? Når der på et tidspunkt kommer rigtig mange kampe, ville det fylde gevaldigt, hvis alle kampe er med + der vil også være mulighed for at komme til at "rette" et tidligere indtastet resultat på en "gammel" kamp.
Datorækkefølgen betyder, at det reelt altid vil være den øverste kamp man skal indtaste endeligt resultat for. OK ?
For god ordens skyld - denneadminside.asp: <!--#include file="resultatconnection.asp"--> <html><head> <h2>Angiv det endelige resultat af en kamp:<br><br></h2> </head> <body> <% if request.querystring("mode") = "save" then conn.execute("update kampe set resultat1="& request.form("res1") &", resultat2="& request.form("res2") &" where id="& request.form("kampID")) end if %> <form action="DenneAdminSide.asp?mode=save" method="post"> <select name="KampID"> <% set rs = conn.execute("select * from kampe") do while not rs.eof response.write "<option value="""& rs("id") &""">"& rs("kamp") rs.MoveNext loop %> </select> <input type="text" size="4" name="res1"> - <input type="text" size="4" name="res2"> <input type="submit" value="Gem"> </form> </select> </body></html>
Så vælger den kun dem hvor der ikke er indsat et resultat og sorteret efter start.
set rs = conn.execute("select * from kampe where resultat1 is NULL order by start")
og modsat alle dem hvor der er et resultat: set rs = conn.execute("select * from kampe where resultat1 is NOT NULL order by start")
Men jeg ville nok lave det på to forskellige sider. En hvor du indsætter nye resultater, og en hvor du ændre gamle (pga forskellig visning). Da man jo kan komme til at indtaste forkert, skal det være muligt at ændre resultatet. Det kunne evt laves på samme side med forskellige mode's.
if mode = "save" then conn.execute("update kampe set resultat1="& request.form("res1") &", resultat2="& request.form("res2") &" where id="& request.form("kampID")) response.redirect("AdminSide.asp") end if
if mode = "update" then %> <form action="DenneAdminSide.asp?mode=save" method="post"> <select name="KampID"> <% set rs = conn.execute("select * from kampe where resultat1 is NOT NULL order by start") do while not rs.eof response.write "<option value="""& rs("id") &""">"& rs("kamp") rs.MoveNext loop %> </select> <input type="text" size="4" name="res1"> - <input type="text" size="4" name="res2"> <input type="submit" value="Gem"> </form>
<% else %> <form action="DenneAdminSide.asp?mode=save" method="post"> <select name="KampID"> <% set rs = conn.execute("select * from kampe where resultat1 is NULL order by start") do while not rs.eof response.write "<option value="""& rs("id") &""">"& rs("kamp") rs.MoveNext loop %> </select> <input type="text" size="4" name="res1"> - <input type="text" size="4" name="res2"> <input type="submit" value="Gem"> </form> <% end if %>
hvis du så kalder DenneAdminSide.asp?mode=update kommer du ind og ser gamle kampe, ellers kommer du til nye.
<a href="DenneAdminSide.asp">indsæt resultat på kamp <a href="DenneAdminSide.asp?mode=update">Ændre gamle resultater
Jeg har også smidt en redirect ind efter update, så man kommer til en admin oversigt (skal du sikkert have lavet), når man har opdateret databasen.
Det er vel også noget du skal kikke på. At bestemme om en bruger er admin eller ej. Det er bare et felt til på bruger tabellen hvor du skriver 0 eller 1 og gemmer den værdi i en session til når man logger ind. Den tjekker du så på admin sidderne.
Det er jo GENIALT - Men jeg kan ikke få kampene frem i Select boksene ?? Jeg har prøvet at flytte rundt på "'erne og 'erne uden held.
****denneadminside.asp <!--#include file="resultatconnection.asp"--> <html><head> <h2>Angiv det endelige resultat af en kamp:<br><br></h2> </head> <body> <% mode = request.Querystring("mode") if mode = "save" then conn.execute("update kampe set resultat1="& request.form("res1") &", resultat2="& request.form("res2") &" where id="& request.form("kampID")) response.redirect("AdminSide.asp") end if if mode = "update" then %> <form action="DenneAdminSide.asp?mode=save" method="post"> <select name="KampID"> <% set rs = conn.execute("select * from kampe where resultat1 is NOT NULL order by start") do while not rs.eof response.write "<option value="""& rs("id") &""">"& rs("kamp") rs.MoveNext loop %> </select> <input type="text" size="4" name="res1"> - <input type="text" size="4" name="res2"> <input type="submit" value="Gem"> </form> <% else %> <form action="DenneAdminSide.asp?mode=save" method="post"> <select name="KampID"> <% set rs = conn.execute("select * from kampe where resultat1 is NULL order by start") do while not rs.eof response.write "<option value="""& rs("id") &""">"& rs("kamp") rs.MoveNext loop %> </select> <input type="text" size="4" name="res1"> - <input type="text" size="4" name="res2"> <input type="submit" value="Gem"> </form> <% end if %> </body></html>
Det er fordi der allerede er indsat et resultat på alle kamp. Det er kun dem hvor resultatet er NULL (tom) der bliver vist på "indsæt det endelige....", alle andre kan ses under "ændre gamle re...".
Du kan selv angive resultatet til NULL i "ændre gamle re..." for nogle kampe. Jeg har lige gjordt det for "Bregnerød mod Brøndby". Bare skriv NULL i begge resultat felter.
Jeg håber du har haft en god week-end. Min har været stille og rolig.
Nå - men jeg skulle lige gøre mit resultatsytem færdigt her til morgen. Jeg syntes ikke mit login system var så godt, så jeg prøvede at indsætte et bedre et, jeg har brugt med succes tidligere - MEN -> Nu er det vist gået i kage......
Problemet pt. er: Når man klikker på en kamp for at gætte og hvis man samtidig IKKE er logget ind - skal man videreføres til login siden...Men det fungerer ikke mere....
Det er: "denneside2.asp" som man ikke må komme ind til, hvis man ikke er logget ind. Men det gør den ??? Hmmm.... <!--#include file="logincheck.inc" --> i toppen af siden, betyder vel - at er man ikke logget ind, videreføres man til: login.asp - IKKE ??
Hej Fennec Tak for dit svar - Jeg havde frygtet du ville fortælle mig, at det var tåbeligt at skifte login system.... ;-) Tak.
De samme session variable ?? Jamen, problemet lige nu er vel, at den slet ikke går over på login siden ?? Men har det noget med session variablerne at gøre....
Problemet pt. er: Når man klikker på en kamp for at gætte og hvis man samtidig IKKE er logget ind - skal man videreføres til login siden...Men det fungerer ikke mere....
Jeg bliver fint smidt ind på login siden. Den siger jeg ikke er logget ind på viskampeplus2.asp og når jeg trykker på "gæt resultat" ryger jeg ind på login siden. Det kan være fordi du ikke har mistet dine sessions fra et tidligere login. Prøv at lukke browseren og åbne siden igen.
Det hele ser ud til at virke i øjeblikket. Dejligt - Tak for hints'ne. ;-)
Spørgsmål: HVIS der ikke er registreret nogle kampe i viskampeplus2.asp, kommer der en fejlmeddelse - Kan man ikke gøre således, at der står: "Der er pt. ingen kampe at gætte på"
Ligeledes med visgaet.asp og nogle af de andre sider !!
Jeg vedlægger lige scripts'ne:
**** viskampeplus2.asp <!--#include file="resultatconnection.asp"--> <html> <title>Oversigt over alle kampe + spilletidspunkt</title> <head>
<link href="style.css" rel="STYLESHEET" TYPE="text/css"> </head> <body> <h2>Oversigt over alle kampe + spilletidspunkt:</h2> <i>Viser kun kampe der kan spilles på, ikke afviklede kampe</i> <br><br>
<% ' Nedenstående viser alle kampe ' select * from kampe where start > now() order by start ' Nedenstående viser kun kampe der IKKE er gået igang strSQL = "select * from kampe where start > now() order by start"
Set rs = Conn.Execute(strSQL)
if Session("brugernavn")<>"" Then Response.Write("Du er logget ind som: " & Session("brugernavn")) Response.Write "<br><br>" else Response.Write("Du er ikke logget ind") Response.Write "<br><br>" end if
Det er fordi du laver dit do/while loop forkert. Det er vigtigt at placere sin while betingelse det rigtige sted.
do ... loop While Not rs.EOF
medfører at loopet kører min en gang.
do while Not rs.EOF ... loop
Her kommer man ikke nødvendigvis ind i loopet. Det er den du skal bruge alle de steder hvor du looper database resultater. Det kan du så kombinere med en if sætning hvis der ikke er resultater
if rs.eof then response.write "Der er pt. ingen kampe at gætte på" do while not rs.eof ... loop
Mange tak for hjælpen ovenstående samt mine andre småproblemer i.f.m. resultatscriptet. Jeg sidder som du sikkert har regnet ud og prøver at "smukkesere" det lidt, inden det skal ud og have brugernes dom ;-)
På denneside2.asp vil jeg gerne have tilføjet en linie med dato'en for kampen rs("start") - men skal jeg definere en session eller hvad - det virker ikke lige...
Har du tid til at kigge på det ??
Scriptet er herunder inkl. mine indsatte linier: Kampstart: </td><td><%= session("start") %>
<!--#include file="logincheck.inc" --> <!--#include file="resultatconnection.asp"--> <html><head> <title>Gæt resultatet</title> <link href="style.css" rel="STYLESHEET" TYPE="text/css"> <h2>Gæt resultatet af en kamp.</h2>
</head> <body>
<% 'Herunder: Der tjeckes om kamptidspunktet er afviklet if request.querystring("mode") = "save" then set rs = conn.Execute("select * from kampe where start>now() and id="& request.form("kampID")) if not rs.eof then
rowsAffected = 0 'updater et evt eksisterende gæt. conn.execute "update brugerGaet set resultat1="& request.form("res1") &", resultat2="& request.form("res2") &" where BrugerID="& request.form("brugerid") &" and KampID="& request.form("kampid") , rowsAffected if rowsAffected = 0 then 'Brugeren har ikke gættet på kampen før. conn.execute("insert into brugerGaet(brugerid,kampid,resultat1,resultat2) values("& request.form("brugerid") &","& request.form("kampid") &","& request.form("res1") &","& request.form("res2") &")") end if
response.redirect("visgaet.asp")
else 'Kampen er begyndt Response.Write ("Desværre - Du nåede ikke at gætte inden kampen begyndte") end if end if %> <form name="MyForm" method="post" action="denneside2.asp?mode=save"> <table> <tr><td> Bruger: </td><td><%= session("Brugernavn") %></td></tr>
<% 'Sådan her tjekker du om en bruger har gættet før, og indsætter gæt res1 = 0 res2 = 0 strID = Request.QueryString("id") strSQL = "Select * From kampe where id = "& strID Set rs = Conn.Execute(strSQL) if not rs.eof then %> <input type="hidden" name="KampID" value="<%= rs("id") %>"><%= rs("kamp") %> <% set rs1 = conn.execute("select * from brugergaet where BrugerID="& session("BrugerID") &" and KampID="& rs("id"))
'set rs1 = conn.execute("select * from brugergaet where BrugerID="& session("BrugerID") &" and KampID="& rs("kamp")) if not rs1.eof then Response.write "</td></tr><tr><td></td><td><font color=red>Du har gættet på resultatet før, men er velkommen til at ændre....</font>" res1 = rs1("resultat1") res2 = rs1("resultat2") end if end if %></b></td></tr> <tr><td> Resultat: </td><td><input type="text" name="res1" size="3" value="<%= res1 %>"> - <input type="text" name="res2" size="3" value="<%= res2 %>"></td></tr> <tr><td></td><td></td></tr> <tr><td> <input type="submit" value="Gem"> </td><td></td></tr>
Du har allerede henter datoen og navnet på kampen fra databasen i dit tjek, for om en bruger har gættet før. Og i dette tilfælde kan du bruge det tjek til udskrivning. Ellers kan du bare lave et database opslag til.
... strSQL = "Select * From kampe where id = "& strID Set rs = Conn.Execute(strSQL) if not rs.eof then %> <input type="hidden" name="KampID" value="<%= rs("id") %>"><%= rs("kamp") %> <tr><td>Kamp:</td><td><%= rs("kamp") %></td></tr> <tr><td>Kampstart:</td><td><%= rs("start") %></td></tr> ...
To korte spørgsmål: 1. Selvom jeg trykker på LOG OFF, kan jeg bagefter gå tilbage til forsiden og så er jeg stadig logget ind !!! Hmm.... Kan du hjælpe med hvordan jeg rigtig logger af ???
2. Når jeg trykker på "GÆT et resultat" og kommer over på gættesiden, -Hvis jeg ikke er logget ind, ryger jeg over på LOG IN siden, men når jeg så er logget ind på denne side, ryger jeg tilbage til Startsiden ?? Kan man gøre et eller andet, så man kommer tilbage på "GÆT et resultat" siden med det samme ??? (Jeg er med på at gøre det via linket, men nogle gange skal man jo ikke ! - F.eks. hvis man blot ønsker at logge ind og se ens gæt !!) Jeg håber du forstår mit spørgsmål, selvom det er lidt kringlet ;-)
1. Session.abandon er ikke altid nok til at nulstille alle session, så nulstil de vigtige sessions selv. Desuden virker session.abandon også kun først når man skifter side. En Javascript location.href med http i navnet vil også ofte medføre en ny session. Kombiner alle disse muligheder, og du skulle være sikker på at alle vigtige sessions er væk.
<% function LogOut() session("Brugernavn") = "" session("BrugerID") = "" session.abandon %> <script> top.location.href = "http://www.asgi.dk/fodbold/resultat/index.htm" </script> <% response.end end function %>
2. du laver en response.redirect("loginSiden.asp") på gæt siden, smid en mode med der.
response.redirect("loginSiden.asp?mode=tilGaet")
På login siden tjekker du så for den mode inden du redirecter derfra. if request.querystring("mode") = "tilGaet" then response.redirect("TilGætSiden.asp") else response.redirect("TilForsiden.asp") end if
Jeg vil gerne have, at man kommer over på GÆTTEsiden, selvom man ikke har logget ind. Derfor skal "mode'n" vel først sættes på her: <a href='denneside2.asp?id=" & rs("id") & "'.... - ikke ?? Men hvordan gør jeg det ? ...og hvis der er "mode" på, skal den jo først til "login.asp" og derefter til "godkend.asp" med samme "mode" ??
Ja, jeg er lidt forvirret.....Håber du forstår min problematik ;-) ;-)
Nej Nej - Man kan være på forsiden og ikke være logget ind. Så kan man klikke på "Viskampeplus2.asp" og se hvilke kampe der kan gættes på. Stadig uden at være logget ind.
Hvis man så pludselig vil gætte - klikker man på GÆT - Kommer over til log-in siden og logger sig på - og DEREFTER skal man tilbage på selve GÆTTEsiden (denneside2.asp)
OK ?? Håber jeg har forklaret mig godt nok, ellers så bare sig til....
(Finten med ovenstående er, at brugeren lige kan få et view over kampe til rådighed, før han begynder at logge på.....)
Redirecten til login.asp siden på denneside2.asp skal ændres til: response.redirect("login.asp?mode=tilGaet&Id="& request.Querystring("id"))
Så sender du en mode med og kampID'et, så du har mulighed for at hoppe tilbage til denneside2.asp på login.asp og sende kampID'et med.
if request.querystring("mode") = "tilGaet" then response.redirect("TilGætSiden.asp?ID="& request.querystring("ID")) else response.redirect("TilForsiden.asp") end if
Hej Fennec Håber alt er vel ! Nu er scriptet jo snart perfekt, men i mine bestræbelser på at gøre det helt perfekt, er jeg kommet på en god idé. Mange brugere vil forhåbentlig bruge dette spil, hvilket betyder at siden "Vis øvrige brugeres Gæt" (visgaet.asp) vil blive stor og måske uoverskuelig.
Kunne man ikke lave denne side på en anden måde, således at den samme kamp ikke skal skrives hele tiden ??
Jeg tænkte på en løsning ala dette: Kamp: Gilleleje mod Frederiksværk 27 aug 2004 16:00 Gæt: 3-2 af: Polle Gæt: 4-1 af: Bodil Gæt: 2-2 af: Erik Gæt: 5-1 af: Fennec
Kamp: Hundested mod Aalborg 31 aug 2004 16:00 Gæt: 5-1 af: Polle Gæt: 2-2 af: Bodil Gæt: 6-3 af: Erik Gæt: 1-4 af: Fennec
osv. osv...
Tror du ikke også det ville være en god idé ?? Det ville ihvertfald fremtræde lidt mere præsentabelt ;-) Eller har du en helt anden og mere genial løsning ?
Har du tid til at prøve at kigge på det ?? - Under alle omstændigheder: Tusind tak for din tid indtil nu..... ;-)
Du har ret I at den skal "shines" lidt op. Men hvis du får mange brugere/kampe kan det også blive uoverskuelig. Her ville jeg (som alternativ løsning) lave to dropdown. En med kampe og en med brugere, også kun vise gæt på den valgte kamp, eller gæt en bruger har fortaget.
Det er en balance du her skal bestemme. 1. Enten gør du som du har forslået, hvilket er måden at gøre det på, hvis antal af kampe, der skal vises, er begrænset (Jeg gætter på mindre end 20 kampe).
2. Eller du laver en dropdown med kampe/brugere, og viser så kun den valgte information, hvilket er måden hvis du får rigtig mange kampe.
Ja, du har så evig ret. (Jeg forestiller mig der vil komme over 20 kampe)
Jeg ville foretrække en løsning som du beskriver, hvor man enten vælger en kamp fra en dropdown - og ser alle de gæt der er lavet på denne kamp. Eller i stedet for at vælge en kamp, vælger en bruger fra en dropdown, og man kan så se alle hans eller hendes gæt.
Alternativt kunne man også liste 2 kolonner, med alle kommende kampe og alle brugere. Så kunne man klikke på en kamp ELLER klikke på en bruger - og få samme resultat som ved dropdown.... Hmmm - Dropdown må være at foretrække. Jeg foretrækker dropdown ;-)
Hvad siger du ? Er det meget besværligt at lave ? - og har du i givet fald tid til det ???
Det er nu ikke så svært. Problemet ligger i at få dropdown til at opføre sig rigtig. Her har du i en grundform for siden. Så skal du bare få sat de rigtige kampe/brugere ind i dropdown med deres ID'er (der skal være en blank option i hver), også ellers vise resultatet. Jeg har ikke lige tid til at klare SQL sætningerne nu, men det burde du også selv kunne klare. De er ikke så indviklet, ellers vender jeg tilbage senere :o)
<select name="KampID" onchange="document.MyForm.BrugerID.selectedIndex=0"> <option value=""> <option value="10">En kamp <option value="4">En kamp til <option value="5">En anden kamp <option value="8">Og en sidste Kamp </select> <select name="BrugerID" onchange="document.MyForm.KampID.selectedIndex=0"> <option value=""> <option value="1">En bruger <option value="5">En bruger til <option value="2">En anden bruger <option value="8">Og en sidste bruger </select>
</form> <% if mode = "show" then
if Request.Form("KampId") <> "" then 'find alle gæt for kampen elseif Request.Form("BrugerID") <> "" then 'find alle gæt for bruger End If %>
<% if mode = "show" then if Request.Form("KampId") <> "" then 'find alle gæt for kampen elseif Request.Form("BrugerID") <> "" then 'find alle gæt for bruger End If end if %>
Hej Fennec Ok - Jeg tror jeg forstår. En lille ting: Du må ikke skynde dig for min skyld, jeg venter med glæde til du får tid.
Hmm - Option Value'erne skal da hente deres værdi fra databasen, ikke ??? Hvorfor så lave flere "Option Value" linier ?? Hmm... Det forstår jeg ikke.
Nå, men i den gamle (nuværende) visgaet.asp, er dataudtrækket det som jeg har lavet til min ringe forespørgsel i databasen - sidste gang kan jeg huske du kunne løse samme problem uden anvendelse af en DB-forespørgsel.
Så hvis du vil og når du har tid - må du meget gerne lige smede et par linier sammen til den ny visgaet.asp side.
Godmorgen Fennec OK -SQL på det niveau kan jeg vel også... Men problemet er, at mine overordnede programmeringsevner ikke er gode nok. Jeg har altid problemer med manglende linier, kommaer, kolonner eller lign....
Det er derfor jeg er så FANTASTISK glad for din hjælp - hver gang du laver en løsning bliver jeg lidt klogere....
Når den nye visgaet.asp er på plads, tror jeg, at jeg vil offentliggøre den for nogle testbrugere i dag, for at få deres mening....
Så har jeg lavet SQL-sætninger og løkker. Det skal bare stilles lidt pænere op.
<% if mode = "show" then if Request.Form("KampId") <> "" then 'find alle gæt for kampen set rs = conn.execute("select * from Kampe where id="& Request.Form("KampId")) if not rs.eof then 'Udskriv evt kamp info her...... response.write "......." 'Find alle gæt på kampen. set rs1 = conn.execute("select * from (Brugere inner join brugerGaet on brugerGaet.brugerid = Bruger.Id) where kampid="& Request.Form("KampId")) do while not rs1.eof response.write rs1("navn") & ": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" rs1.MoveNext loop end if elseif Request.Form("BrugerID") <> "" then set rs = conn.execute("select * from bruger where id="& Request.Form("BrugerID")) if not rs.eof then 'find alle gæt for en bruger set rs1 = conn.execute("select kampe.*, brugerGaet.resultat1 as res1, brugerGaet.resultat2 as res2 from (kampe inner join brugerGaet on brugerGaet.kampid=kampe.ID) where brugerGaet.brugerid="& Request.Form("BrugerID")) do while not rs1.eof response.write rs1("kamp") &": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" response.write rs("navn") & ": "& rs1("res1") &"-"& rs1("res2") &"<br>" rs1.MoveNext loop end if End If end if %>
Mange Tak, Meeenn: Ikke fordi jeg vil lyde dum, men jeg kan altså ikke lige få det til at funge.... Det skal vel være i FORM - Men det er det jo også...SELECTboksene er der jo også.... Hmmm.... Der må være et eller andet jeg ikke lige har husket.... ;-) - Jeg har også prøvet at kalde siden med diverse "mode's..." uden held..
**** visgaet.asp <!--#include file="resultatconnection.asp"--> <html> <title>Gæt et resultat</title> <head> <link href="style.css" rel="STYLESHEET" TYPE="text/css"> </head> <body> <h2>Oversigt over alle gæt der er foretaget:</h2><br><br> <% if mode = "show" then if Request.Form("KampId") <> "" then 'find alle gæt for kampen set rs = conn.execute("select * from Kampe where id="& Request.Form("KampId")) if not rs.eof then 'Udskriv evt kamp info her...... response.write "......." 'Find alle gæt på kampen. set rs1 = conn.execute("select * from (Brugere inner join brugerGaet on brugerGaet.brugerid = Bruger.Id) where
kampid="& Request.Form("KampId")) do while not rs1.eof response.write rs1("navn") & ": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" rs1.MoveNext loop end if elseif Request.Form("BrugerID") <> "" then set rs = conn.execute("select * from bruger where id="& Request.Form("BrugerID")) if not rs.eof then 'find alle gæt for en bruger set rs1 = conn.execute("select kampe.*, brugerGaet.resultat1 as res1, brugerGaet.resultat2 as res2 from (kampe inner
join brugerGaet on brugerGaet.kampid=kampe.ID) where brugerGaet.brugerid="& Request.Form("BrugerID")) do while not rs1.eof response.write rs1("kamp") &": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" response.write rs("navn") & ": "& rs1("res1") &"-"& rs1("res2") &"<br>" rs1.MoveNext loop end if End If end if %> <p><a href=java script:history.go(-2)> << Tilbage</a></p> </body></html>
Hej Fennec Det er sådan set også der jeg har gjort... ;-) Jeg har prøvet at sætte din kode ind i FORM-SELECT koderne.... - Jeg kan godt se, at der mangler noget !! SELECT boks nummer 2 skal jo have databaseudtrækket fra din kode.... Og det skal SELECT 2 i den anden jo også have....
MEn lige meget hvordan jeg prøver er der enten fejl på siden eller ingen resultater i dropdown boksene.... Men er det "response.write rs1("navn") & ": "& rs1("resultat1") &"-"& rs1("resultat2") &" der skal ind i SELECT boksen ?? Nej, vel ?
<!--#include file="resultatconnection.asp"--> <html> <title>Gæt et resultat</title> <head> <link href="style.css" rel="STYLESHEET" TYPE="text/css"> </head> <body> <h2>Oversigt over alle gæt der er foretaget:</h2><br><br>
<% if mode = "show" then if Request.Form("KampId") <> "" then 'find alle gæt for kampen set rs = conn.execute("select * from Kampe where id="& Request.Form("KampId")) if not rs.eof then 'Udskriv evt kamp info her......
response.write "......." 'Find alle gæt på kampen. set rs1 = conn.execute("select * from (Brugere inner join brugerGaet on brugerGaet.brugerid = Bruger.Id) where kampid="& Request.Form("KampId")) do while not rs1.eof response.write rs1("navn") & ": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" rs1.MoveNext loop end if %> </select> <select name="BrugerID" onchange="document.MyForm.KampID.selectedIndex=0"> <option value=""> <%
elseif Request.Form("BrugerID") <> "" then set rs = conn.execute("select * from bruger where id="& Request.Form("BrugerID")) if not rs.eof then 'find alle gæt for en bruger set rs1 = conn.execute("select kampe.*, brugerGaet.resultat1 as res1, brugerGaet.resultat2 as res2 from (kampe inner join brugerGaet on brugerGaet.kampid=kampe.ID) where brugerGaet.brugerid="& Request.Form("BrugerID")) do while not rs1.eof response.write rs1("kamp") &": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" response.write rs("navn") & ": "& rs1("res1") &"-"& rs1("res2") &"<br>" rs1.MoveNext loop end if End If end if %> </select> </form> <p><a href=java script:history.go(-2)> << Tilbage</a></p> </body> </html>
Det jag havde lavet der, er kun til at vise resultaterne. Sådan her skal det være:
form name="MyForm" method="post" action="visGaet.asp?mode=show"> <select name="KampID" onchange="document.MyForm.BrugerID.selectedIndex=0"> <option value=""> <% set rs = conn.execute("select * from kampe") do while not rs.eof %> <option value="<%= rs("id")%>"><%= rs("kamp")%> <% rs.MoveNext loop %> </select> <select name="BrugerID" onchange="document.MyForm.KampID.selectedIndex=0"> <option value=""> <% set rs = conn.execute("select * from brugere") do while not rs.eof %> <option value="<%= rs("id")%>"><%= rs("navn")%> <% rs.MoveNext loop %> </select> </form> <% if mode = "show" then if Request.Form("KampId") <> "" then 'find alle gæt for kampen set rs = conn.execute("select * from Kampe where id="& Request.Form("KampId")) if not rs.eof then 'Udskriv evt kamp info her...... response.write "......." 'Find alle gæt på kampen. set rs1 = conn.execute("select * from (Brugere inner join brugerGaet on brugerGaet.brugerid = Bruger.Id) where kampid="& Request.Form("KampId")) do while not rs1.eof response.write rs1("navn") & ": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" rs1.MoveNext loop end if elseif Request.Form("BrugerID") <> "" then set rs = conn.execute("select * from bruger where id="& Request.Form("BrugerID")) if not rs.eof then 'find alle gæt for en bruger set rs1 = conn.execute("select kampe.*, brugerGaet.resultat1 as res1, brugerGaet.resultat2 as res2 from (kampe inner join brugerGaet on brugerGaet.kampid=kampe.ID) where brugerGaet.brugerid="& Request.Form("BrugerID")) do while not rs1.eof response.write rs1("kamp") &": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" response.write rs("navn") & ": "& rs1("res1") &"-"& rs1("res2") &"<br>" rs1.MoveNext loop end if End If end if %>
Perfekt - Men den skriver ikke det valgte resultat ud !!
Det må være linierne: response.write rs1("kamp") &": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" response.write rs("navn") & ": "& rs1("res1") &"-"& rs1("res2") &"<br>" der skal pilles ved.....
Jeg har prøvet forskellige kombinationer uden det store held....
<!--#include file="resultatconnection.asp"--> <html> <title>Gæt et resultat</title> <head> <link href="style.css" rel="STYLESHEET" TYPE="text/css"> </head> <body> <h2>Oversigt over alle gæt der er foretaget:</h2><br><br> <form name="MyForm" method="post" action="visGaet.asp?mode=show"> <select name="KampID" onchange="document.MyForm.BrugerID.selectedIndex=0"> <option value=""> <% set rs = conn.execute("select * from kampe") do while not rs.eof %> <option value="<%= rs("id")%>"><%= rs("kamp")%> <% rs.MoveNext loop %> </select> <select name="BrugerID" onchange="document.MyForm.KampID.selectedIndex=0"> <option value=""> <% set rs = conn.execute("select * from bruger") do while not rs.eof %> <option value="<%= rs("id")%>"><%= rs("navn")%> <% rs.MoveNext loop %> </select> </form> <% if mode = "show" then if Request.Form("KampId") <> "" then 'find alle gæt for kampen set rs = conn.execute("select * from Kampe where id="& Request.Form("KampId")) if not rs.eof then 'Udskriv evt kamp info her...... response.write "......." 'Find alle gæt på kampen. set rs1 = conn.execute("select * from (bruger inner join brugerGaet on brugerGaet.brugerid = Bruger.Id) where kampid="& Request.Form("KampId")) do while not rs1.eof response.write rs1("navn") & ": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" rs1.MoveNext loop end if elseif Request.Form("BrugerID") <> "" then set rs = conn.execute("select * from bruger where id="& Request.Form("BrugerID")) if not rs.eof then 'find alle gæt for en bruger set rs1 = conn.execute("select kampe.*, brugerGaet.resultat1 as res1, brugerGaet.resultat2 as res2 from (kampe inner join brugerGaet on brugerGaet.kampid=kampe.ID) where brugerGaet.brugerid="& Request.Form("BrugerID")) do while not rs1.eof response.write rs1("kamp") &": "& rs1("resultat1") &"-"& rs1("resultat2") &"<br>" response.write rs("navn") & ": "& rs1("res1") &"-"& rs1("res2") &"<br>" rs1.MoveNext loop end if End If end if %> <p><a href=java script:history.go(-2)> << Tilbage</a></p> </body> </html>
Ja -Det fungerer helt perfekt... Men øhhh ! - Jeg er ikke lige med på, de nye ændringer du har lavet ?? Jeg har indsat dem, men jeg syntes ikke rigtig jeg kan finde fejlen !!!
Forskellen er, at nu bliver det valg, man har lavet i dropdown'en, vist efter der er submittet. Før var begge dropdown tomme igen. Prøv et fjerne disse linjer, og du vil se hvordan det var før.
<% if request.form("KampID")&"" = rs("id")&"" then response.write "selected" %> <% if request.form("BrugerID")&"" = rs("id")&"" then response.write "selected" %>
Det er altid rart for brugeren at han/hun kan se hvilke valg man lavede.
Godmorgen Fennec - Ja, det kan jeg godt se. Du har helt ret, det er en vigtig oplysning, at brugeren kan se hvilken kamp det er, der bliver vist resultater fra. Super godt. ;-)
Mens jeg nu sidder med siden, fik jeg lige en god idé.
Vælger man en kamp, der ER spillet, er det en god funktionalitet, at man kan se hvad alle andre havde gættet på i den kamp. (Sådan virker det nu) MEN - Det kunne være en god idé, hvis der nederst under alle brugernes gæt stod: Kampen er spillet og resultatet blev 2-1.
Kan du følge mig ??
Kan det lade sig gøre ? Er det besværligt for dig ? Fennec - Du må endelig sige til, hvis jeg spørger dig for meget, så du ikke bliver træt af mig.... ;-) - Men det var blot endnu en idé jeg fik.
Det er ikke noget problem at lave. Jeg havde faktist forberet scriptet på det :o)
'Udskriv evt kamp info her...... response.write "......."
Dette kan du udskifte med kamp info. f.eks
if trim(rs("resultat1")&"") = "" then 'Kamp ikke spillet response.write "Kamp " & rs("kamp") &" er ikke spillet endnu" else 'kamp spillet response.write rs("kamp") &": "& rs("resultat1") &"-"& rs("resultat2") end if
Hej Fennec Jeg håber du har haft en god week-end med mere... Personligt har jeg lidt travlt i øjeblikket.
Kort spørgsmål - hvis du har tid:
Flere testbrugere har haft problemer med at logge ind på "Gæt Resultat" systemet. Dette skyldes, at de, efter de har oprettet sig - ikke kan forstå, at de ikke er logget ind !!! Det er jo fordi, at de derefter skal tilbage på startside og SÅ logge sig ind.
Tror du - det er muligt, at gøre således, at efter at man har oprettet sig som bruger - så er man automatisk logget ind ??
**** NY.ASP <html> <head> <title>Ny Bruger</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="../style.css" rel="STYLESHEET" TYPE="text/css"> </head> <body> <p><h2>Opret profil</h2> <i>Vælg venligst et sigende Kalde-Navn. Det vil være dette navn, som vil figurere på High-Score listen med flere. <br>E-Mail adresse og dit fulde navn SKAL udfyldes korrekt, men vil ikke være tilgængeligt for andre end Webmaster</i> <form method="post" action="opret.asp"> <p>Kalde-Navn:<font color="red"> *</font><br> <input type="text" name="navn" maxlength="20" size="20"> <p>Ønsket password:<font color="red"> *</font><br> <input type="text" name="adgangskode" maxlength="50" size="50"> <p>E-mail adresse:<font color="red"> *</font><br> <input type="text" name="email" maxlength="50" size="50"> <p>Dit fulde navn:<font color="red"> *</font><br> <input type="text" name="brugernavn" maxlength="100" size="50"> <p><br> <input type="submit" value="Opret"> <input type="reset" value="Nulstil"> </form><p> <font color="red">*</font>= Alle felt kræves udfyldt <!-- #INCLUDE FILE="../bundtekst.asp" --> </body> </html>
'Tester om brugernavn findes i databasen Set rs = Conn.execute ("SELECT * FROM bruger WHERE navn='" & navn & "'")
If Not rs.Eof Then Response.Write("<p><font color=red>Brugernavn er allerede oprettet! Vælg venligst et andet brugernavn!</font></p>") fejl = true End If
'Tester om email findes i databasen Set rs = Conn.execute ("SELECT * FROM bruger WHERE email='" & email & "'")
If Not rs.Eof Then Response.Write("<p><font color=red>E-Mailadresse er allerede anvendt - Der må kun oprettes en bruger pr. E-Mail adresse!</font></p>") fejl = true End If
Conn.Close Set Conn = Nothing
If navn = "" Then Response.Write("<p><font color=red>Indtast venligst et navn!</font></p>") fejl = true End If
If adgangskode = "" Then Response.Write("<p><font color=red>Indtast venligst et password!</font></p>") fejl = true End If
If email = "" Then Response.Write("<p><font color=red>Indtast venligst en e-mail adresse!</font></p>") fejl = true End If
'Opretter profil i databasen If fejl <> true Then Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=D:\asgi.dk\www\db\resultat.mdb;UID=;PWD=;"
Det kan sagtens lade sig gøre. Du skal bare sætte de samme sessions, når du gemmer i databasen, som du gør når du logger ind. Problemet er at trække ID ud, som lige er blevet indsat. Men det kan da lade sig gøre. Der er to måder at få Id'et ud på, men jeg ved ikke om den ene virker i Access. Ellers kræver det bare et ekstra opslag. Begge metoder bruger "SELECT @@IDENTITY" funktionen.
Virker måske (et database opslag): strSQL = "SET NOCOUNT ON; INSERT INTO bruger (" &_ "navn, brugernavn, adgangskode, email, oprettet, sidste_login) " &_ "values('" & navn & "', '" & brugernavn & "', '" & adgangskode & "', '" & email & "', '" & Now & "', '" & Now & "'); SELECT @@IDENTITY AS THISID;" set rs = Conn.Execute(strSQL) Session("BrugerID") = rs("THISID") Session("Brugernavn") = navn Session("BrugerEmail") = email Session("logon") = "JEPS"
Denne virker (to database opslag): strSQL = "INSERT INTO bruger (" &_ "navn, brugernavn, adgangskode, email, oprettet, sidste_login) " &_ "values('" & navn & "', '" & brugernavn & "', '" & adgangskode & "', '" & email & "', '" & Now & "', '" & Now & "')" Conn.Execute(strSQL) set rs = conn.Execute("SELECT @@IDENTITY AS THISID;") Session("BrugerID") = rs("THISID") Session("Brugernavn") = navn Session("BrugerEmail") = email Session("logon") = "JEPS"
Nu kan jeg ikke huske, hvilke session's du sætter, når du logger ind, men du kan sikkers se ideen.
Du har brugerId'et til at ligge i rs("THISID") i begge metoder, og hvis du gemmer andre oplysninger om brugeren i session (som navnet), kan du tage dem fra de samme ASP variablerne, som du brugte i indsættelsen.
Hej Fennec Jeg ville blot lige give lyd fra mig. Jeg har desværre lidt travlt i øjeblikket med både arbejde samt andet frivilligt arbejde. Jeg har fået en del tilbagemeldinger på "Gæt Resultat" scriptet - Jeg vender frygtelig tilbage senere..... Håber alt er vel.
Hej Fennec Jeg ville blot lige igen give lyd fra mig. Jeg har desværre stadig meget travlt med arbejde... - Jeg vender tilbage senere..... Håber du kan tilgive min lange respons tid og jeg håber alt er vel....
Nu var det egentlig ikke lige et tips system jeg var inde og lede efter, men nu faldt jeg jo lige over det, og hvor kan man dog være heldig en gang i mellem. Har selv været ved at fifle lidt med et "tips-system" men det er aldrig blevet til noget d
Selvfølgelig - For min skyld må du gerne få kopi af det hele.... ;-)
Jeg er dog ikke helt færdig...Jeg skal lige have defineret de sidste ting for Fennec og derefter, burde det være ** perfekt **. Jeg har desværre meget lidt tid pt, så det kommer lige til at vare lidt....
Men du kan sende mig din email og så kan jeg sende kopi af det hele når vi er færdige....
OK - Jeg skal nok gøre det. Men det bliver lige lidt senere, da jeg lige skal finde filerne sammen - og jeg vil i den anledning lige definere de sidste rettelser til fennec.
Hejsa. Jeg har siddet på sidelinie og fulgt denne tråd fra starten og er også meget interesseret i at få det færdige script. Så hvis det ikke er for meget for langt såee kristian@darkzone.dk ;o)
Klart - Selvfølgelig skal det være færdigt inden sæson'en går i gang.... Jeg skal nok huske dig...... Er lige lidt travlt hængt op i øjeblikket... ;-) By the way: Hvad er adressen på dit/jeres klubsite ?
sletKode: if mode="sletKamp" then tmp = request.querystring("kampID") conn.execute("delete from brugerGaet where kampid="& tmp) conn.execute("delete from kampe where id="& tmp) end if
Ja, sorry - Undskyldninger kan ikke blive gode nok........
Tro mig - Jeg vil også gerne have det klar til efterårssæson'en......og igen - mine undskyldninger kan ikke opveje den lange ventetid - MEN: Tro mig - Jeg er fantastisk glad for fennec's hjælp og jeg vil med glæde dele ud af scriptet når det bliver færdigt.... Nu får jeg snart sommerferie fra mit nye arbejde, så bliver der forhåbentlig tid til at få lukket hullerne......
Fortsat rigtig god sommer til jer alle........ ;-)
Jeg kunne aldrig drømme om, at undlade at give fennec point.... Jeg håber ikke du nogensinde har været i tvivl om dette fennec - det har ihvertfald aldrig været hensigten.......
Jeg har skrevet det tidligere og skriver det gerne igen - jeg er utrolig taknemmlig for al din hjælp fennec og du skal nok få point med mere til....bare sig til.
Jeg har heller ikke glemt Rasmus........
Nu er sommeren slut og vi skal have afsluttet dette superscript. Jeg vender tilbage senere fennec og Rasmus. Hav en rigtig god dag - allesammen.....
Ja - så gik sæson'en. Så må vi få systemet op at køre inden næste sæson....
;-) Ha det nu rigtig godt
Fennec ?? - Vil du have alle dine super fortjente point nu, eller skal vi vente til det er helt færdigt ??? Bare sig til... Jeg vil med glæde give dig point.
Det lyder rigtigt godt det der, tænkte også forleden dag på at skrive herinde, men det er da godt at det ikke er glemt helt, selvom det er lidt sjovt at tænke på at første gang at Fennec svarede var tilbage til 10/09-2004 det taget åbentbart langt tig om at lave. Vi starter op med bold den 28. august så må vi se om det er færdig til den tid.
Godt at E har fået gang i emails igen, ellers havde jeg da glemt dette ? :o)
Angående point vil jeg hellere have dem i dec eller jan. Jeg kommer nemlig ikke så meget på E i de måneder (diverse ferier), og derfor kan jeg få problemer med at opretholde mit pro-medlemskab.
Hej E.S. Hvordan står det til, vi har i denne weekend spillet vores første turneringskamp, bliver lotto-systemet klar til næste weekend, eller hvor langt tid vil du tro der går?
Det er emma-sofie, der styre dette (jeg har bare hjulpet lidt), og som du kan ser herinde, sker der ikke så meget mere :o)
Du kan måske være så heldig, at hun vil give dig den kode hun har, så du selv kan arbejde vidre med den.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.