08. september 2003 - 00:15Der er
50 kommentarer og 3 løsninger
må kun sende 5 gange
Hvordan laver man et script der giver en bruger mulighed for kun at sende postkort 5 gange fra en hjemmeside, Brugeren logger ind for at komme til det, så jeg skal bruge en counter der tæller op til 5, hvor efter den pågældene bruger ikke må sende postkort mere den dag, men næste dag, kan han/hun sende 5 igen, hvordan gør man det.
Jeg går ud fra at du har brugeren liggende i en tabel?
Du skal først lave et ekstra felt, AntalSendte (f.eks. en tinyint) Hver gang der sendes et postkort tæller du en op.
Der ud over skal du lige lave en lille tabel eller lign. der indeholder dags dato.
Hvis dags dato er mindre end nuværende dato skal dags dato opdateres og samtidig skal du sætte samtlige brugeres AntalSendte til 0:
update bruger set Antalsendte = 0
Synes godt om
Slettet bruger
08. september 2003 - 00:24#2
du skal have 1 række ekstra i din brugertabel der hedder dato...
siden hvor postkortet bliver sendt:
IF year(rs("dato"))<>year(now) AND month(rs("dato"))<>month(now) AND day(rs("dato"))<>day(now) THEN conn.execute("update table set count=0, dato='now'") END IF
IF rs("count")<=5 THEN
send postkort
conn.execute("update table set count=" & rs("count")+1 & ", dato='now'")
END IF
Synes godt om
Slettet bruger
08. september 2003 - 00:25#3
hov... troede, du selv havde en counter-række.. den skal du self også oprette...
Synes godt om
Slettet bruger
08. september 2003 - 00:27#4
hov igen... det skal self se sådan her ud:
IF year(rs("dato"))=year(now) AND month(rs("dato"))=month(now) AND day(rs("dato"))=day(now) THEN ELSE conn.execute("update table set count=0, dato='now'") END IF
IF rs("count")<=5 THEN
send postkort
conn.execute("update table set count=" & rs("count")+1 & ", dato='now'")
Åhh... jamen du skal checke om de må sende endnu et postkort før de kommer ind på postkortsiden (eller ved login) sådan at folk ikke sidder og skriver postkort for så at få det hele kylet væk.
'Opbygger Sql-sætningen rsSQL = "SELECT * FROM bruger where bruger = '" & bruger & "' and kodeord = '" & pass & "'"
' hvis brugeren var i databasen set rs = Conn.execute(rsSQL) If Not (rs.BOF Or rs.Eof) Then Session("ID") = rs("ID") session("login") = True Response.redirect "default1.asp"
Else
' ' Hvis brugeren ikke var i databasen Response.redirect "default.asp"
End If
' Lukker forbindelse til databasen Conn.Close Set Conn = Nothing
hvis brugeren var i databasen set rs = Conn.execute(rsSQL) If Not (rs.BOF Or rs.Eof) Then if rs("AntalSendte") >= 5 then Response.redirect "KomIgenIMorgen.asp" end if Session("ID") = rs("ID") session("login") = True Response.redirect "default1.asp"
IF year(rs("dato"))=year(now) AND month(rs("dato"))=month(now) AND day(rs("dato"))=day(now) THEN ELSE conn.execute("update table set count=0, dato='now'") END IF
set rs = Conn.execute(rsSQL) If Not (rs.BOF Or rs.Eof) Then Session("ID") = rs("ID") session("login") = True IF year(rs("dato"))=year(now) AND month(rs("dato"))=month(now) AND day(rs("dato"))=day(now) THEN ELSE Conn.execute("update table set count=0, dato=now()") END IF if rs("count") >= 15 then Response.redirect "default.asp?valg=1&Titel=Desværre&Msg=Du kan ikke sende flere idag!!!" end if Response.redirect "default.asp"
Else
' ' Hvis brugeren ikke var i databasen Response.redirect "Login.asp"
End If
' Lukker forbindelse til databasen Conn.Close Set Conn = Nothing
End if
I denne linie her:
Conn.execute("update table set count=0, dato=now()") Fejlen er: Syntax error in UPDATE statement.
Så skal du STRAKS sætte en sql server op og køre på den i stedet. Access' syntaks er forskellig på flere områder. Getdate er en stored procedure i SQL Server, så den virker naturligvis ikke i Access. Jeg har knap så meget check på access som SQL Server - sorry.
Er det ny MySQL du kører? den er ENDNU mere forskellig fra Acccess end MSSQL.
Nå, men: Nej, hvis der ikke er angivet noget i WHERE-delen bliver det kørt på ALLE records i din tabel.
Hvad angår: conn.execute("update table set count=" & rs("antalsendte")+1 & ", dato='now'") Skal der naturligvis være en "WHERE brugerid = " & Session("ID"), ellers tælles samtlige brugere op.
Jeg ved ikke om getdate() er understøttet i MySQL - ellers findes der nok en anden metode.
jo.... det gør vi :-) God dag... skrives ved i aften ved en 23.00 tiden
Synes godt om
Slettet bruger
08. september 2003 - 17:23#45
Hvis du bruger count='" & rs("antalsendte")+1 & "' virker det ikke... det skal enten hedde count='" & rs("count")+1 & "' eller antalsendte='" & rs("antalsendte")+1 & "'... dette kan også gøres nemmere ved bare at sige count= count+1
sådan her skal hele koden se ud:
'Hvis der ikke er sendt nogle postkort i dag, bliver count nulstillet og dato sat til now
IF year(rs("dato"))<>year(now) AND month(rs("dato"))<>month(now) AND day(rs("dato"))<>day(now) THEN conn.execute("update table set count=0, dato='now'") END IF
'Hvis der ikke allerede er sendt 5 postkort i dag, skal brugeren kunne sende et postkort... IF rs("count")<=5 THEN %> <form action="sendpostkort.asp"> <input type="text" name="tilbruger"> <input type="text" name="hvordanpostkortetnuskalseud"> (eller hvordan man nu skal sætte postkortet sammen....) <input type="text" name="osv"> </form> <% END IF %>
sendpostkort.asp
conn.execute("update table set count=count+1 dato='now', bruger='" & session("bruger")")
jeg kopierede et forkert indlæg... det er bare det med datoen, der var forkert ovenover...
sådan her skal hele koden se ud:
'Hvis der ikke er sendt nogle postkort i dag, bliver count nulstillet og dato sat til now
IF year(rs("dato"))=year(now) AND month(rs("dato"))=month(now) AND day(rs("dato"))=day(now) THEN ELSE conn.execute("update table set count=0, dato='now'") END IF
'Hvis der ikke allerede er sendt 5 postkort i dag, skal brugeren kunne sende et postkort... IF rs("count")<=5 THEN %> <form action="sendpostkort.asp"> <input type="text" name="tilbruger"> <input type="text" name="hvordanpostkortetnuskalseud"> (eller hvordan man nu skal sætte postkortet sammen....) <input type="text" name="osv"> </form> <% END IF %>
sendpostkort.asp
conn.execute("update table set count=count+1 dato='now', bruger='" & session("bruger")")
skal dato have et specielt property, fordi den ikke skrive hele datoen, hvis jeg bruger now, fejler den, og hvis jeg bruger date, skriver den kun -2003 i datoen
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.