webForumDet fria alternativet

Personlig räknare?

ASP

23 svar · 330 visningar · startad av crisse6

Medlem sedan dec. 20002 526 inlägg
Frågan#1

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?

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#2

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

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 20001 558 inlägg
#3

Lägg till ett fält i db och uppdatera det varje gång Kalle loggar in :)

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan okt. 20001 558 inlägg
#4

LarsG >> Du skall alltid vara värst... exempelkod och allt ;) :e

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan dec. 20002 526 inlägg
#5

okej, men om jag nu vill baka in detta i min "slumpar-kod" så vet jag inte hur jag ska gå till väga... :q

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")%>

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#6

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>"

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20002 526 inlägg
#7

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?

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan okt. 20001 558 inlägg
#8

På din login sida :)

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan dec. 20002 526 inlägg
#9

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

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan juni 200032 967 inlägg
#10

du skapar ett recordset, men var är selectfrågan som ska fylla det :q

[r]: rad 12 är?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>

[Redigerat av @nders den 22 apr 2001]

Medlem sedan dec. 200012 464 inlägg
#11

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.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 22 apr 2001]

Medlem sedan dec. 20002 526 inlägg
#12

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
%>

------------------
www.groda.net *kvack*, *kvack*

[Redigerat av crisse6 den 22 apr 2001]

Medlem sedan dec. 200012 464 inlägg
#13

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!!!

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20002 526 inlägg
#14

öö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 :q

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 19996 721 inlägg
#15

set rs = databas.execute("select namn,(antalbesok - 1) as antalbesok from users where id = " & session("id"))

Medlem sedan dec. 20002 526 inlägg
#16

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?

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#17

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å?

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20002 526 inlägg
#18

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!

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#19

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.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 23 apr 2001]

Medlem sedan dec. 20002 526 inlägg
#20

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>

------------------
www.groda.net *kvack*, *kvack*

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)