Avatar billede gatez Nybegynder
25. maj 2003 - 21:39 Der er 19 kommentarer og
1 løsning

Udløbs dato

Hejsa...

Er der nogle af jer der har et godt forslag på hvordan jeg laver dette:
På min hjemmeside har jeg et bruger system hvor brugere kan logge ind... Når de er logget ind har de så mulighed for at blive VIP medlem af min side dvs. de for flere muligheder... Der er et feldt i bruger databasen som hedder VIP hvis den er "True" så er de VIP medlemmer... Men det koster 100,- om året og efter det år skal brugerens VIP funktioner automatisk lukkes... Så derfor bliver datoen på VIP oprettelsen også skrevet i databasen...
Men hvordan laver jeg et system som der automatisk skriver "False" under VIP i brugerens tabel når der er gået et år fra oprettelse datoen ?
Avatar billede oasen Nybegynder
25. maj 2003 - 21:43 #1
Update Brugertabel Set VIP = 'False' Where Tilmeldingsdato < #" & DateAdd("d", -365, Now) & "#

Så skal du bare have serveren til at afvikle dette script f.eks. en gang i døgnet.
Avatar billede eagleeye Praktikant
25. maj 2003 - 21:45 #2
Du kan lave en SQL som opdater det sådan her, eks viker i Access :

SQL = "UDATE tabel SET VIP=false WHERE DateAdd('y',1,tilmeldingsdato) >= date()"
Avatar billede gatez Nybegynder
25. maj 2003 - 21:46 #3
--> Oasen:

Takker men hvordan for jeg dette til at virke ?

Sådan kontakter jeg brugerens database:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.Mappath("../database/bodykits.dk/brugersystem.mdb")
sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql, conn, 1, 3
intBrugerID = RS("ID")
strBrugernavn = RS("Brugernavn")
strFornavn = RS("Fornavn")
strEfternavn = RS("Efternavn")
stremail = RS("email")
strwebsite = RS("website")
strbrugerbillede = RS("brugerbillede")
strVIP = RS("VIP")
strTilmeldingsdato = RS("Tilmeldingsdato")
strAdminStatus = RS("AdminStatus")
rs.Close
%>
Avatar billede gatez Nybegynder
25. maj 2003 - 21:50 #4
Og hvordan skal datoen står i feldtet "Tilmeldingsdato" ? bare sådan: 29-05-2003 ??
Avatar billede gatez Nybegynder
25. maj 2003 - 21:53 #5
Hallo ? nogle der kan hjælpe med at få koden til at virke ??
Avatar billede eagleeye Praktikant
25. maj 2003 - 21:54 #6
Skal du havde en general SQL som tjkker alle brugere hvor gang eller vil du havde en som kun sætter VIP false for en enkelt bruger når han logger ind?
Avatar billede gatez Nybegynder
25. maj 2003 - 21:57 #7
Den skal bare tjekke hver enkelt bruger når de logger ind om datoen er udløbet eller ej. Hvis den er skal den lave VIP = False

Takker :-)
Avatar billede eagleeye Praktikant
25. maj 2003 - 22:01 #8
Ok så prøv at rette din kode til dette:


<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.Mappath("../database/bodykits.dk/brugersystem.mdb")
sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql, conn, 1, 3
intBrugerID = RS("ID")
strBrugernavn = RS("Brugernavn")
strFornavn = RS("Fornavn")
strEfternavn = RS("Efternavn")
stremail = RS("email")
strwebsite = RS("website")
strbrugerbillede = RS("brugerbillede")
strVIP = RS("VIP")
strTilmeldingsdato = RS("Tilmeldingsdato")
if CDate(DateAdd("y",1,CDate(strTilmeldingsdato))) <= CDate(Date()) AND CBool(strVIP) = true then
  SQL = "UPDATE bruger SET VIP = false WHERE brugernavn = '" & Session("brugernavn") & "'"
  Conn.Execute(SQL)
  strVIP = false 
end if
strAdminStatus = RS("AdminStatus")
rs.Close
%>
Avatar billede gatez Nybegynder
25. maj 2003 - 22:02 #9
Jeg prøver 2 min...
Avatar billede gatez Nybegynder
25. maj 2003 - 22:04 #10
Jeg for denne fejl når jeg logger ind:
Microsoft VBScript runtime error '800a000d'

Type mismatch: 'CBool'

/loggetind.asp, line 68
Avatar billede eagleeye Praktikant
25. maj 2003 - 22:06 #11
Så prøv at rette denne :

if CDate(DateAdd("y",1,CDate(strTilmeldingsdato))) <= CDate(Date()) AND CBool(strVIP) = true then

Til:

if CDate(DateAdd("y",1,CDate(strTilmeldingsdato))) <= CDate(Date()) AND strVIP = true then
Avatar billede gatez Nybegynder
25. maj 2003 - 22:08 #12
Jeg fandt også ud af at der ikke står True og False i databasen men: Ja og Nej... Så derfor har jeg lavet koden om til det.
Avatar billede gatez Nybegynder
25. maj 2003 - 22:09 #13
Nu for jeg denne fejl:

Microsoft VBScript compilation error '800a03f9'

Expected 'Then'

/loggetind.asp, line 69

if CDate(DateAdd("y",1,CDate(strTilmeldingsdato))) &lt; = CDate(Date()) AND strVIP = Ja then
------------------------------------------------------^
Avatar billede gatez Nybegynder
25. maj 2003 - 22:11 #14
Er det iorden at datoen i databasen står sådan: 24-05-2003  ??
Avatar billede eagleeye Praktikant
25. maj 2003 - 22:15 #15
Det er fordi det er copy/paste direkte ind &lt; skal være > så der står >=

Hvis det er et Ja/Nej felt så bruger man True eller 1 for Ja og False eller 0 for Nej.
Avatar billede eagleeye Praktikant
25. maj 2003 - 22:17 #16
Arh det skal vøre <= IKKE >= som jeg skrev
Avatar billede gatez Nybegynder
25. maj 2003 - 22:20 #17
Jeg har lavet en bruger hvor der står 22-05-2002 i Tilmeldingsdato men personen er stadig VIP selv om jeg logger ind med den bruger... Hvordan kan det være ?

Sådan ser min kode ud:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.Mappath("../database/bodykits.dk/brugersystem.mdb")
sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql, conn, 1, 3
intBrugerID = RS("ID")
strBrugernavn = RS("Brugernavn")
strFornavn = RS("Fornavn")
strEfternavn = RS("Efternavn")
stremail = RS("email")
strwebsite = RS("website")
strbrugerbillede = RS("brugerbillede")
strVIP = RS("VIP")
strTilmeldingsdato = RS("Tilmeldingsdato")
'if CDate(DateAdd("y",1,CDate(strTilmeldingsdato))) <= CDate(Date()) AND CBool(strVIP) = Ja then
if CDate(DateAdd("yyyy",1,CDate(strTilmeldingsdato))) <= CDate(Date()) AND strVIP = Ja then
  SQL = "UPDATE bruger SET VIP = Nej WHERE brugernavn = '" & Session("brugernavn") & "'"
  Conn.Execute(SQL)
  strVIP = Nej 
end if
strAdminStatus = RS("AdminStatus")
rs.Close
%>
Avatar billede eagleeye Praktikant
25. maj 2003 - 22:25 #18
Hvis det er et Ja/Nej felt så bruger man True eller 1 for Ja og False eller 0 for Nej.
Avatar billede gatez Nybegynder
25. maj 2003 - 22:25 #19
Jeg laver det lige om 2 min....
Avatar billede gatez Nybegynder
25. maj 2003 - 22:29 #20
Jeg tror det virker :-)

Mange tak for hjælpen...!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester