Avatar billede da_darkside Nybegynder
30. januar 2006 - 11:30 Der er 14 kommentarer og
1 løsning

Tæl hvor mange gange en ip optræder i en database

Hej

Jeg sidder med en database som indeholder loggede besøg fra de seneste 2 år....

Hvordan tæller jeg de op hvor mange gangé hver enkelt ip adresse har været inde og se på siden via count proceduren ?
Avatar billede fennec Nybegynder
30. januar 2006 - 11:32 #1
select ip, count(ip) from dintabel group by ip
Avatar billede da_darkside Nybegynder
30. januar 2006 - 11:55 #2
ok, så fik jeg listet de forskellige ip´s så de kun optræder 1 gan pr stk... men hvad med antal gange? den sædvanlige "found" fungere ikke
Avatar billede da_darkside Nybegynder
30. januar 2006 - 11:57 #3
men kan selvfølgelig lave en count procedure bagefter... :)
Avatar billede ladyhawke Novice
30. januar 2006 - 12:02 #4
fennecs forslag tæller da også antallet af gange, eller har du ikke count(ip) med?
Avatar billede da_darkside Nybegynder
30. januar 2006 - 12:14 #5
jo, men hvordan printer jeg antalle ud på siden ?
Avatar billede michael_stim Ekspert
30. januar 2006 - 12:15 #6
select ip, count(ip) AS antal from dintabel group by ip

Og så skriver du bare antal ud
Avatar billede fennec Nybegynder
30. januar 2006 - 12:17 #7
.. eller brug index-nummeret:

response.write rs(0)
response.write rs(1)
Avatar billede da_darkside Nybegynder
30. januar 2006 - 12:21 #8
Tro i snakker ved forbi hinanden ligger lige et stykke af koden op...

<%
Set LRs = myConn.Execute("select ip, count(ip) from Stacin group by ip order by count(ip) desc")
If Lrs.BOF Or Lrs.EOF Then
%>
                            <tr>
                                <td width="450" colspan="4">&nbsp;Der kunne ikke findes nogen data</td>
                            </tr>
<%
else

Do until Lrs.eof

TSL_IP = Lrs("IP")

%>
                            <tr>
                                <td width="106">&nbsp;</td>
                                <td width="173">&nbsp;<%=TSL_IP%></td>
                                <td width="105">&nbsp;11/09/2005</td>
                                <td width="66">&nbsp;<a href=WebLog_ShowIP.Asp?Ips=<%=TSL_IP%>>Vis</a></td>
                            </tr>
<%

Lrs.movenext
loop
end if

Lrs.Close
Set Lrs = Nothing
%>
Avatar billede da_darkside Nybegynder
30. januar 2006 - 12:22 #9
så skal bruge antalle af gange samt datoen for det sidste besøg
Avatar billede michael_stim Ekspert
30. januar 2006 - 12:25 #10
<%
Set LRs = myConn.Execute("select ip, count(ip) AS antal from Stacin group by ip order by antal desc")
If Lrs.BOF Or Lrs.EOF Then
%>
                            <tr>
                                <td width="450" colspan="4">&nbsp;Der kunne ikke findes nogen data</td>
                            </tr>
<%
else

Do until Lrs.eof

TSL_IP = Lrs("IP")
ANTAL_IP = Lrs("antal")'Denne kan du så udskrive hvor du vil

%>
                            <tr>
                                <td width="106">&nbsp;</td>
                                <td width="173">&nbsp;<%=TSL_IP%></td>
                                <td width="105">&nbsp;11/09/2005</td>
                                <td width="66">&nbsp;<a href=WebLog_ShowIP.Asp?Ips=<%=TSL_IP%>>Vis</a></td>
                            </tr>
<%

Lrs.movenext
loop
end if

Lrs.Close
Set Lrs = Nothing
%>

Og hvad dato angår så er det jo en anden historie. Der må du jo sætte et timestamp ind i tabellen.
Avatar billede da_darkside Nybegynder
30. januar 2006 - 12:28 #11
ja, har et felt som hedder Dato ud for hver ip adresse
Avatar billede fennec Nybegynder
30. januar 2006 - 12:29 #12
Set LRs = myConn.Execute("select ip, count(ip) AS antal, max(dato) as lastDate from Stacin group by ip order by antal desc")
Avatar billede da_darkside Nybegynder
30. januar 2006 - 12:36 #13
Får fejlen når jeg prøver en af ovenstående:

Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.

WebLog.Asp, line 57

linie 57 er:

Set LRs = myConn.Execute("select ip, count(ip) AS antal, max(dato) as lastDate from Stacin group by ip order by antal desc")
Avatar billede da_darkside Nybegynder
30. januar 2006 - 12:44 #14
skal dog lige nævnes af jeg ikke kan benytte feltalias antal osv på serveren uden at omstille dem med []

så det må blive Set LRs = myConn.Execute("select ip, count(ip) AS [antal], max(dato) as [lastDate] from Stacin group by ip order by antal desc")
Avatar billede fennec Nybegynder
30. januar 2006 - 12:49 #15
Det er fordi Access ikke kan finde ud af at bruge alias i where. Du skal altså sortere efter count(ip) og ikke antal:

Set LRs = myConn.Execute("select ip, count(ip) AS antal, max(dato) as lastDate from Stacin group by ip order by count(ip) desc")
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