Avatar billede want2learn Nybegynder
04. maj 2004 - 01:04 Der er 12 kommentarer og
2 løsninger

Tæl antallet og skriv det til en TXT fil

Jeg har et spm.

hvis jeg har denne database.
test.mdb
test
ID auto/key
LINKNAVN text
VISIT tal

hvordan kan jeg tælle antallet af visit ialt for alle recorder.
og så tage dette tal og skrive det ind i en txt fil.
Dog skal den se om det står et tal i forvejen hvis ikke så skal den indsætte tallet den når frem til og ellers skal den tage det tal som står i txt filen og lægge det tal til som den før og overskrive det gamle tal.

min txt fil hedder visit.txt og linje 1 er VISIT og linje 2 er så der hvor der står 0 hvis der intet er eller evt 23 hvis der iforvejen er lagt et tal ind i den.

håber i forstår mig.

men kan det lade sig gøre og vil nogle hjælpe mig med noget der kan tælle det den skal i min database og så tage dette tal og skrive det til txt filen. ved at lægge det til det tal der i forvejen står i txt filen linje 2.

grunden til det er linje 2 er forde jeg skal have et andet tal til at stå i linje 4 som intet har med linje 2 at gøre.
Avatar billede fennec Nybegynder
04. maj 2004 - 08:12 #1
1. del
set rs = conn.execute("select sum(VISIT) as total from test")
Avatar billede goose Nybegynder
04. maj 2004 - 08:13 #2
Som jeg ser det, så virker det som en lidt tung måde at gøre det på, hver gang der er en der besøger en af dine sider skal visit.txt rettes.
Hvor laver du ikke bare et udtræk af det samlede antal besøg der hvor du gerne vil have det vist når du nu har en kolonne i databasen hvor du tæller antal hits ?

<%
response.buffer = true

' ***********************************************************
' SAMMENTÆL BESØG IALT
' ***********************************************************

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database/test.mdb")
Set con = server.createobject("adodb.connection")
con.open strCon

SQL = "SELECT sum(visit) as antalialt FROM test"
set rs = con.execute(SQL)

response.write "Ialt " & rs("antalialt")

rs.close
set rs = nothing
con.close
set con = nothing

%>

/Goose
Avatar billede mortency Nybegynder
04. maj 2004 - 09:41 #3
Her kan du lære hvordan du skal skrive til en txt fil....

http://www.w3schools.com/asp/asp_ref_textstream.asp
Avatar billede want2learn Nybegynder
04. maj 2004 - 11:02 #4
GOOSE

jeg vil også have at det er en database der styrer det men min database kan evt blive for stor og derfor vil jeg kunne hver 2-3 mdr lave en optælling og skrive det til en txt fil som jeg har skrevet og så rende det script du have lavet til mig så jeg nulstiller databasen. og starter forfra
Avatar billede goose Nybegynder
04. maj 2004 - 11:10 #5
hmm, hvorfor så have en tæller, det forstår jeg slet ikke noget af, gider  du forklarer mig hvad formål det så tjener ?

/Goose
Avatar billede goose Nybegynder
04. maj 2004 - 11:20 #6
Hmm, prøv nedenstående hvor din fil visit.txt ligger i mappen "database".
På den måde får du ihvertfald lavet en textfil som indeholder antal besøg, men hvordan du får flere linier sat ind kan jeg ikke lige se, men ellers lav en textfil til hvert formål, så er det nemmere at overskue.

<%
response.buffer = true

' ***********************************************************
' SAMMENTÆL BESØG IALT
' ***********************************************************

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database/test.mdb")
Set con = server.createobject("adodb.connection")
con.open strCon

SQL = "SELECT sum(visit) as antalialt FROM test"
set rs = con.execute(SQL)
antal = rs("antalialt")
rs.close
set rs = nothing
con.close
set con = nothing

' ***********************************************************
' OPDATER TEXT-FIL
' ***********************************************************

CountPath = server.mappath("database/visit.txt")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(CountPath)
Set objFileTextStream = objFile.OpenAsTextStream(1,-2)
usercount = cint(objFileTextStream.readline)

usercount = usercount + cint(antal)

Set objFileTextStream = objFile.OpenAsTextStream(2,-2)
objFileTextStream.WriteLine usercount

objFileTextStream.close

%>


/Goose
Avatar billede want2learn Nybegynder
04. maj 2004 - 13:15 #7
grunden til det er fordi jeg vil lave noget statistik for min side hvor man kan se antal besøgende for hver dag/uge/mdr. dog kun 3 mdr tilbage.

og så kan man selvf. se de totale antal besøgende ialt.

jeg skal derfor bruge database for at kunne se den avanceret statistik men så for at denne ikek bliver for stor vil jeg så slette den og nulstille den hver 3. mdr. men tage det tal den er nået til og skrive dette til en txt fil.
Avatar billede goose Nybegynder
04. maj 2004 - 13:24 #8
ok, men så burde du kunne bruge ovenstående ?

/Goose
Avatar billede want2learn Nybegynder
04. maj 2004 - 13:52 #9
ja ser lige om jeg kan men ved den at den skal kigge efter linje 2 i min txt fil og tage det tal der står det og lægge det til og overskrive det !??
Avatar billede goose Nybegynder
04. maj 2004 - 14:09 #10
Nej, visit.txt skal kun indeholde et tal, ikke andet.
Yderligere hjælp kan jeg ikke give dig nu da jeg skal på arbejde :o(

/Goose
Avatar billede want2learn Nybegynder
05. maj 2004 - 11:46 #11
kan du evt lave det så den kigger efter den der linje 2 eller kan det ikke lade sig gøre !?
Avatar billede goose Nybegynder
05. maj 2004 - 12:12 #12
Ikke lige umiddelbart, er det meget nødvendigt for dig at det lige præcist er linie 2 ?

/Goose
Avatar billede want2learn Nybegynder
05. maj 2004 - 12:39 #13
ja fordi jeg vil have et andet tal i linje 4 sådan så det er samlet og så jeg ikek skal have 3-4 forskellige txt filer !!
Avatar billede goose Nybegynder
05. maj 2004 - 13:27 #14
Okay, prøv så den her istedet for.
Lige for at fortælle dig hvad den gør, så gør den følgende

Den indlæser filen visit.txt
Læser tallet på 2. linie og lægger antal til
Overskriver den eksisterende visit.txt med følgende data:
Linie 1: VISIT
Linie 2: det nye tal

- og så tror jeg ikke du kan pille mere ud af mig i det her spørgsmål.

' ***********************************************************
' OPDATER TEXT-FIL
' ***********************************************************

Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set f=fs.OpenTextFile(CountPath, 1)
f.SkipLine
usercount = cint(f.Readline)
f.Close
Set f=Nothing
Set fs=Nothing
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(CountPath)
Set objFileTextStream = objFile.OpenAsTextStream(1,-2)
usercount = usercount + cint(antal)
Set objFileTextStream = objFile.OpenAsTextStream(2,-2)
objFileTextStream.WriteLine "VISIT"
objFileTextStream.WriteLine usercount
objFileTextStream.close

/Goose
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