webForumDet fria alternativet

Blir inte i procent?

15 svar · 538 visningar · startad av Bosse168

Bosse168Medlem sedan nov. 20031 018 inlägg
#1

Använder denna kod för att få fram hur många besökare som har besökt min webbplats. Allt funkar förutom att procenten blir helt fel. Om jag har haft 625 besökare så blir procenten 62500% för den dagen(!).

Någon som vet vad det är för fel?

Set Rs = Connect2.Execute("SELECT COUNT(ip) FROM stat WHERE datum >= DATE_SUB(CURRENT_DATE, INTERVAL 6 day )GROUP BY datum ORDER BY datum")

asp = Rs(0)

Rs.Close : Set Rs=nothing

Set Rs = Connect2.Execute("SELECT count(*) as cnt, DAYNAME(datum) as dnr, datumet AS mon, TO_DAYS(datum) as tdr FROM stat WHERE datum >= DATE_SUB(CURRENT_DATE, INTERVAL 6 day ) GROUP BY dnr,tdr ORDER BY tdr")

If not Rs.EOF Then

Dim dagen,dnr,mon

Do while not Rs.Eof

proc    = clng(Rs(0)) / clng(asp)
procent = proc * 100
M.CheraghiMedlem sedan juli 20015 107 inlägg
#2

du har två SQL satser som du hämtar värdet med RS som recordset, dvs när tvåan kör igång så eliminerar du dom gamla värderna från första RS.

Det är min teori

r:/ fast endå inte

Bosse168Medlem sedan nov. 20031 018 inlägg
#3

Jag sätter ju värdet i en variabel och stänger recordsetet innan jag hämtar från nästa :/

solbulleMedlem sedan mars 20015 287 inlägg
#4

Vad innehåller dina variabler om du skriver ut dom? Stämmer båda värdena då?

Bosse168Medlem sedan nov. 20031 018 inlägg
#5

Om jag skriver ut dom så här

Response.Write Rs(0) &" / "& asp

Så får jag ut dessa värden:
784 / 1

Jag får alltid ut 1 från variablen asp, kan det bero på något fel i den SQL-satsen?

Givetvis så har jag inte med &" / "& när jag räknar ut procenten ;)

J.N.Medlem sedan apr. 20031 660 inlägg
#6

HEJ!

Om du får 62500% och vill ha 62,5% istället, dela med 1000 istället för att multiplicera med 100 :stud (<=besserwissergubbe!)

Dock vore jag också irriterad över varför det inte blir rätt när man multiplicerar med 100, därför återstår endast att du räknar fel.
Får du 784 och delar det med 1 och gångrar med 100 så blir det 78400%. Det kan vi inte fejka bort.

Gillar du inte siffran, får du leta i dina frågor.
Vad vill du egentligen räkna ut?
784: antal besökare?
1: antal ipnummer?

Vill du ha reda på hur procentandelen som kommer från samma ip som det du själv har?

Bosse168Medlem sedan nov. 20031 018 inlägg
#7

Nej i variablen asp ska ha värdet på hur många besökare jag haft sedan det nuvarande datumet och 6 dagar bakåt.

Bosse168Medlem sedan nov. 20031 018 inlägg
#8

Ingen som vet hur man löser detta?

J.N.Medlem sedan apr. 20031 660 inlägg
#9

HEJ!

Se mitt svar, kontrollera matematiken.
Gillar du inte svaret, kontrollera din sql.

Bottnar problemet i att besökarna (=du) är en enda person, och att du räknar på en testwebb? Alltid vanskligt att köra fast i problem som inte finns i verkligheten. :r

Rs(0) = 784 (du har besökt 784 ggr senaste veckan?)
asp = 1 (du har haft en besökare, du själv, samma ip?)

EclipseMedlem sedan juli 20003 825 inlägg
#10

du har glömt "WHERE ... AND IP = " & myIP

i första frågan

Bosse168Medlem sedan nov. 20031 018 inlägg
#11

Nu förstår jag inte hur du menar.

Bosse168Medlem sedan nov. 20031 018 inlägg
#12

Någon som vet hur jag kan räkna ut veckostatistiken?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#13

Det du vill göra är alltså att visa hur många procent av veckans besökare som har besökt sidan en viss veckodag? (Exempel: Måndag v 37 utgjorde 7% av veckans besökare)
Eller?
Har du prövat att helt enkelt byta plats på nämnare och täljare:

proc    = clng(asp) / clng(Rs(0))
procent = proc * 100

?
Kan du tala om vad respektive SQL-sats egentligen hämtar för info?

Bosse168Medlem sedan nov. 20031 018 inlägg
#14

Första SQL satsen ska räkna ut hur många besökare man har haft en vecka bakåt och den andra räknar ut hur många dags statistiken.

EclipseMedlem sedan juli 20003 825 inlägg
#15

1. SELECT COUNT(*) from stat WHERE dteCreated => dateAdd(date(), -6)
2. SELECT COUNT(*) FROM stat WHERE dteCreated = date()

1. = 200
2. = 10

myPercent = (SQL1 / SQL2) * 100
myPercent = 5%

Det finns en inbyggd procentfuntion i ASP för detta:
response.write FormatPercent(2/32)

***
Alternativ kod i en rad
SQL = SELECT (SELECT COUNT(*) from stat WHERE dteCreated => dateAdd(date(), -6) )
, SELECT COUNT(*) from stat WHERE dteCreated =date()
FROM stat;

Set mySQL = Conn.Execute(SQL)

response.write FormatPercent( mySQL(1) / mySQL(0) )

***
Helt otestat, mest som insperation!

EclipseMedlem sedan juli 20003 825 inlägg
#16

Bosse168 skrev:

Nu förstår jag inte hur du menar.

Du vet ju inte att det är ditt IP nummer!

Set Rs = Connect2.Execute("SELECT COUNT(ip) FROM stat 
WHERE datum >= DATE_SUB(CURRENT_DATE, INTERVAL 6 day )
[b]AND ip = " & mittIP-nummer & "[/b]
GROUP BY datum ORDER BY datum")

Varför har du 'group by' och 'order by' när du bara vill räkna hur många dom är?

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)