En extra kolumn i medlemstabellen som man uppdaterar vid varje inloggning.
sql = "update members " & _
"set visits = visits + 1 " & _
" where username = '" & username & "'"
conn.execute sql,,128
23 svar · 388 visningar · startad av crisse6
Tjabba!
Hur fixar man en personlig räknare för varje medlem, asså som andra medlemmar kan se när man tex slumpar en medlem typ såhär:
Slumpad medlem:
Kalle Andersson
Ålder: 18
Fakta:
bla bla....
Kalle har varit på denna sida 80 ggr...
fattar ni?
En extra kolumn i medlemstabellen som man uppdaterar vid varje inloggning.
sql = "update members " & _
"set visits = visits + 1 " & _
" where username = '" & username & "'"
conn.execute sql,,128
Lägg till ett fält i db och uppdatera det varje gång Kalle loggar in
LarsG >> Du skall alltid vara värst... exempelkod och allt
okej, men om jag nu vill baka in detta i min "slumpar-kod" så vet jag inte hur jag ska gå till väga...
slumpad.asp:
<!-- #include file="adovbs.inc" -->
<%
Set Databas2 = Server.CreateObject("ADODB.Connection")
MdbFilePath2 = Server.MapPath("users.mdb")
Databas2.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Hämta en länk slumpartat ifrån databasen *****
SQL = "select Count(*) AS klo from users"
Set RS_klo = databas2.execute(SQL)
Randomize
Set rstemp = Server.Createobject("ADODB.Recordset")
SQL = "Select * from users"
rstemp.cursorlocation = aduseclient
rstemp.cachesize = 5
rstemp.open SQL, "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath2 & ";"
rstemp.move Int(Rnd*RS_klo("klo"))
%>
<table border="0" cellpadding="4" cellspacing="3" bgcolor="#F7F7E7" style="border-width:0; border-color:black; border-style:solid;">
<tr>
<td width="119" align="center"><p><%
If Len(rstemp("bilder")) > 0 then
strBild = "<img src='"&rstemp("bilder")&"'>"
Else
strBild = "<img src='bild1.jpg'>"
End If
Response.write strBild
%>
skriver ut namn, username osv... med denna snutt <%=rstemp("namn")%>
Om din kolumn som innehåller antalet besök heter antalBesok så kan man lägga till:
response.write rs("namn") & _
" har varit här " & _
rs("antalBesok") & " gånger <br>"
men man måste väll baka in denna kod först?
sql = "update members " & _
"set visits = visits + 1 " & _
" where username = '" & username & "'"
conn.execute sql,,128
och var?
På din login sida
varför fungerar inte denna kod:
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Updatera besöken *****
Set rs = Server.Createobject("ADODB.Recordset")
sql = "update users " & _
"set visits = visits + 1 " & _
" where username = '" & username & "'"
Databas.execute sql,,128
response.write rs("namn") & _
" har varit här " & _
rs("antalBesok") & " gånger <br>"
%>
får detta felet:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/groda/personal.asp, line 12
ooops
Vad heter din kolumn där du lagrar antal besök? Nu förutsätter jag att den heter visits.
Det verkar ha blivit lite ihopblandning mellan olika tabeller. Om du lagrar medlemsid
i session så borde detta vara ok annars så får du ändra de raderna
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Updatera besöken *****
sql = "update users " & _
"set visits = visits + 1 " & _
" where id = " & session("medlemsid")
Databas.execute sql,,128
set rs = databas.execute("select namn,visits - 1 from users where id = " & session("medlemsid")
if Cint(rs("visits") = 1 then
response.write rs("namn") & _
" har varit här " & _
rs("visits") & " gång <br>"
else
response.write rs("namn") & _
" har varit här " & _
rs("visits") & " gånger <br>"
end if
%>
128 => skapa inget recordset, det byggs ett recordset internt i ADO om man inte anger denna option.
min kolum heter antalbesok så jag ändrade det.... men den tycker det är oavslutad strängkonsonant.... + att jag ändrade till session id istället... du ser nog
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Updatera besöken *****
sql = "update users " & _
"set antalbesok = antalbesok + 1 " & _
" where id = " & session("id")
Databas.execute sql,,128
set rs = databas.execute("select namn,antalbesok - 1 from users where id = " & session("id")
if Cint(rs("antalbesok") = 1 then
response.write rs("namn") & _
" har varit här " & _
rs("antalbesok") & " gång <br>"
else
response.write rs("namn") & _
" har varit här " & _
rs("antalbesok") & " gånger <br>"
end if
%>
Okej, jag såg 1 sak
set rs = databas.execute("select namn,antalbesok - 1 from users where id = " & session("id")[b])[/b]
och 1 till
if Cint(rs("antalbesok")[b])[/b] = 1 then
Om det inte hjälper, så kan du väl säga vilken rad du får fel på och peka ut den raden!!!
ööhh... något är fel????
det uppdateras i databasen oså... men får detta felmess:
ADODB.Fields error '800a0cc1'
ADO kunde inte hitta objektet i mängden som överensstämmer med det begärda namnet eller numret.
/groda/personal.asp, line 18
line 18 är denna:
if Cint(rs("antalbesok")) = 1 then
konstigt
set rs = databas.execute("select namn,(antalbesok - 1) as antalbesok from users where id = " & session("id"))
nope, tack emission ändå, men det funkar inte riktigt.... får nu detta felmess:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][Drivrutin för ODBC Microsoft Access] Cirkelreferens orsakad av aliaset 'antalbesok' i frågans SELECT-instruktion.
/groda/personal.asp, line 16
rad 16:
set rs = databas.execute("select namn,(antalbesok - 1) as antalbesok from users where id = " & session("id"))
hela koden:
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Updatera besöken *****
sql = "update users " & _
"set antalbesok = antalbesok + 1 " & _
" where id = " & session("id")
Databas.execute sql,,128
set rs = databas.execute("select namn,(antalbesok - 1) as antalbesok from users where id = " & session("id"))
if Cint(rs("antalbesok")) = 1 then
response.write rs("namn") & _
" har varit här " & _
rs("antalbesok") & " gång <br>"
else
response.write rs("namn") & _
" har varit här " & _
rs("antalbesok") & " gånger <br>"
end if
%>
he he.... visst é jag jobbig?
Okej, om man har ett annat alias
set rs = databas.execute("select namn,(antalbesok - 1) as antal from users where id = " & session("id"))
if Cint(rs("antal")) = 1 then
response.write rs("namn") & _
" har varit här " & _
rs("antal") & " gång <br>"
else
response.write rs("namn") & _
" har varit här " & _
rs("antal") & " gånger <br>"
end if
%>
hur går det då?
f*n va jobbigt detta är, inget av mina skript funkar idag!
nu får jag detta felmeddelande (det funkar med mig crisse6 att se hur många gånger jag besökt sidan men inte andra)
update users set antalbesok = antalbesok + 1 where id = 40
Körningsfel i Microsoft VBScript error '800a005e'
Ogiltig användning av Null: 'Cint'
/groda/personal.asp, line 18
kod för sidan:
<!-- #include file="adovbs.inc" -->
<!-- #include file="checkb.inc" -->
<html>
<body>
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Updatera besöken *****
sql = "update users " & _
"set antalbesok = antalbesok + 1 " & _
" where id = " & session("id")
Response.Write SQL
Databas.execute sql,,128
set rs = databas.execute("select namn,(antalbesok - 1) as antal from users where id = " & session("id"))
if Cint(rs("antal")) = 1 then
response.write rs("namn") & _
" har varit här " & _
rs("antal") & " gång <br>"
else
response.write rs("namn") & _
" har varit här " & _
rs("antal") & " gånger <br>"
end if
%>
<!-- #include file="checkb2.inc" -->
</body>
</html>
detta är sjukt!
Okej, om du uppdaterar medlemstabellen så att alla har 0 besök (i stället för null )
update users set antalBesok = 0
where antalBesok is null
Det finns väl något sätt att kör SQL-frågor direkt i Access så det är väl bara att dunka in den där och testa sen igen.
hmmm.... vad är det för fel nu då? jag får inga felmess, men det står att varje person har varit där 2 gånger oavsett om man uppdaterar och sånt... hjälp!
<!-- #include file="adovbs.inc" -->
<!-- #include file="checkb.inc" -->
<html>
<body>
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Updatera besöken *****
sql = "update users set antalBesok = + 1 where id = " & session("id")
Databas.execute sql,,128
set rs = databas.execute("select namn,(antalbesok + 1) as antal from users where id = " & session("id"))
if Cint(rs("antal")) = 1 then
response.write rs("namn") & _
" har varit här " & _
rs("antal") & " gång <br>"
else
response.write rs("namn") & _
" har varit här " & _
rs("antal") & " gånger <br>"
end if
%>
<!-- #include file="checkb2.inc" -->
</body>
</html>