Avatar billede baitianlong Nybegynder
20. maj 2002 - 21:30 Der er 30 kommentarer og
2 løsninger

Tæller med database !

Jeg har prøvet at finde en asp-tæller der bruger en database fremfor en txt-fil, men jeg har ikke kunnet finde en jeg forstod. Er der ikke en der kan hjælpe med at vise mig den mest simple tæller, der læser tallet fra databasen (mdb) og lægger en til, inden den putter det i en variabel og gemmer det igen. Du bliver også nødt til at hjælpe mig med hvad, der skal være i databasen (der skal vel være et navn og en værdi ?!?)
Avatar billede kimiwan Nybegynder
20. maj 2002 - 21:33 #1
set conn = server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("databasen.mdb")
conn.execute("UPDATE tblTaeller SET taellerfelt = taellerfelt + 1")
conn.close
set conn = nothing
Avatar billede jnissen Nybegynder
20. maj 2002 - 21:34 #2
Du kan bruge denne kode

Så lave du en database som hedde "counter", med en tabel som også hedder "counter". I den tabel har du et felt som hedder "antal" som er af typen tal.
Så skulle det virke.

<!-- METADATA TYPE="typelib" FILE="C:\Program Files\Common Files\System\ado\msado15.dll" -->
<%
'Option Explicit
Dim objRS, strConn, Antal
If (Session("Antal") = "") Then   
strConn ="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("counter.mdb")
Set objRS = Server.CreateObject("ADODB.RecordSet")
objRS.Open "SELECT * FROM counter", strConn, adOpenDynamic, adLockOptimistic, adCmdText
        objRS("Antal") = objRS("Antal") + 1
        objRS.Update
        Session("Antal") = objRS("Antal")
        objRS.Close
        Set objRS = Nothing
End If
%>

Mvh. Jacob
Avatar billede jnissen Nybegynder
20. maj 2002 - 21:35 #3
Skulle være et svar :-)
Avatar billede kimiwan Nybegynder
20. maj 2002 - 21:36 #4
...her skal du så selvfølgelig ha' en tabel der hedder tblTaeller, samt et talfelt i tabellen der hedder taellerfelt.


...og så læste jeg selvfølgelig ikke lige spørgsmålet godt nok - glemte "læse" delen, sorry.

set conn = server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("databasen.mdb")
conn.execute("UPDATE tblTaeller SET taellerfelt = taellerfelt + 1")
set rs = conn.execute("SELECT taellerfelt FROM tblTaeller")
if not rs.eof then Taeller = rs("taellerfelt")
conn.close
set rs = nothing
set conn = nothing


response.write(Taeller)
Avatar billede Slettet bruger
20. maj 2002 - 21:37 #5
ellers kan der hentes en fra www.questis.dk under elementer -> counter
Avatar billede baitianlong Nybegynder
20. maj 2002 - 21:46 #7
til jnissen> Jeg ved godt jeg er idiot, men kommer variablen til at hedde "antal" hos dig. dvs kan jeg få den frem med dette i html-delen:

Hits so far:<%=antal%> hits
Avatar billede baitianlong Nybegynder
20. maj 2002 - 21:52 #8
Questis>> Tak for linket og den "færdige fil", men der er et problem. Når jeg bruger den, beder browseren om adgangskode til min computer. Det gør den Poll jeg har gang i ikke ?!?!?

(P.S: I din zipfil hedder den coun.asp , ikke count.asp, er det meningen ?? (((O;)
Avatar billede jnissen Nybegynder
20. maj 2002 - 21:54 #9
legende.dk -> Ja det er <%= rs("antal")%> du skal bruge.
Avatar billede Slettet bruger
20. maj 2002 - 21:58 #10
denne:
http://www.questis.dk/koder/asp/Ialtcounter/count.zip

den skulle helst ikke bed om adgangs kode ?
Avatar billede Slettet bruger
20. maj 2002 - 22:02 #11
åben den der hedder:
coun.asp, det erstartter du indholdet af den fil med dette:

og det skulle virke:

<head>
<style type='text/css'>
h2 {   
    font: 10px Verdana,sans-serif;
    padding: 0px 0px 0px 0px;
    margin: 0px 0px 0px 0px;
}
</style>
</head>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("count.mdb")
Conn.Open DSN
strSQL ="SELECT * FROM count WHERE ip = '" & request.ServerVariables("REMOTE_ADDR") & "'"
set rs = conn.execute(strSQL)
if (rs.EOF OR rs.BOF)  then

' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("count.mdb")
Conn.Open DSN

SQLstmt = "INSERT INTO count (ip)"
SQLstmt = SQLstmt & " VALUES ('" & request.ServerVariables("REMOTE_ADDR") & "')"


Conn.Execute (SQLstmt)
end if

strSQL ="SELECT Count(*) as ialt From count "
set rs=Conn.Execute(strSQL)

response.write "<h2>Du er den: " & rs("ialt") & ". unikker bruger på denne side</h2>"


conn.Close
Set conn = nothing
Set SQLstmt = nothing
%>
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:05 #12
Jeg prøvede lige med jnissen's men den giver dns-error. Kan det være fordi det øverste tag indeholder en sti på din computer ??
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:07 #13
Questis>> Den bliver ved med det adgangskode skrammel. Jeg har givet skriveadgang i det bibl, ellers ville poll/stem jo ikke du !?
Avatar billede Slettet bruger
20. maj 2002 - 22:11 #14
gør den det, når du er inde på min side ? og tjekker eksemplet oxo ? i såfald er det din comp. der er sat op til at ville havde det, og ikke mit script. da der ikke er nogen former for brug af din comp. andet end at den registerer din ip......
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:18 #15
Q>> Næ, på din side kan jeg godt se noget, men din kode duer ikke !!! Man bliver ved med at være nr. 16
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:19 #16
Nå ok . Havde ikke lige set at den læste ip-adressen, og derfor kun tæller første gang. Men det er jeg ikke interesseret i. Den skal bare tælle, uanset hvad.
Avatar billede Slettet bruger
20. maj 2002 - 22:24 #17
ok, men kan da hurtigt flægge en sammen til dig jeg kan sende, men vil ikke hvis du vælgere at bruge den anden, da det sp ville være spildt arbejde.
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:24 #18
Jeg har prøvet alle jeres scripts, men kan ikke få det til at virke.
Kimiwan>> Jeg har blot lavet det du skrev til en side sådan her:

<%
set conn = server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("databasen.mdb")
conn.execute("UPDATE tblTaeller SET taellerfelt = taellerfelt + 1")
set rs = conn.execute("SELECT taellerfelt FROM tblTaeller")
if not rs.eof then Taeller = rs("taellerfelt")
conn.close
set rs = nothing
set conn = nothing


response.write(Taeller)
%>
Du er nr:<%=Taeller%> Her

Og lavet databasen som beskrevet, men den skriver bare. Du er nr:Her

----------------------------------------------------------------------

jnissen>> Fejltype:
Active Server Pages, ASP 0224 (0x80004005)
Kan ikke indlæse de typebiblioteker, der er specificeret i METADATA-programkoderne.
/legendarisk/counter.asp, line 1

-------------------------------------------------------------------

Jeg bliver sindsyg !!! Det burde da være enkelt at få til at virke...
Avatar billede eagleeye Praktikant
20. maj 2002 - 22:30 #19
udbygger lige Kimiwan's svar.

Du skal huske selv lige at skrive 0 i kolonnen taellerfelt i databasen ellers kan den ikke opdatere. Åben men Access og skriv 9 i kolonnen.
Avatar billede eagleeye Praktikant
20. maj 2002 - 22:32 #20
øh ikke 9 men 0 :)
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:39 #21
eagleeye>> er min "side" med kimiwans kode god nok, eller mangler der noget. Der står ikke andet end det ! -Prøver lige med nullet...
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:41 #22
Det lader sgu til at den virker nu. Prøv lige, gutter:

http://80.62.79.61/legendarisk/count_kimi.asp

Tryk på opdater som en sindsyg !!
Avatar billede eagleeye Praktikant
20. maj 2002 - 22:42 #23
:) jeg var nummer 26
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:42 #24
Virker det hos jer ?
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:43 #25
Hold kæft den tæller hurtigt, det må betyde i også trykker (((((o;

Tak for hjælpen alle. Kimiwan og Eagleeye deler pointsne
Avatar billede eagleeye Praktikant
20. maj 2002 - 22:46 #26
jeg er nummer 27-123
Hvis du vil undgå man kan trykke på reload så kan du lave en session variable som sikre man kun tæller op en hvis man alså ikke stater en ny browser eller slår Session/cookies fra i browseren.


<%
set conn = server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("databasen.mdb")
if session("kunenprsession") = "" then
  conn.execute("UPDATE tblTaeller SET taellerfelt = taellerfelt + 1")
  session("kunenprsession") = "1"
end if
set rs = conn.execute("SELECT taellerfelt FROM tblTaeller")
if not rs.eof then Taeller = rs("taellerfelt")
conn.close
set rs = nothing
set conn = nothing


response.write(Taeller)
%>
Du er nr:<%=Taeller%> Her
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:50 #27
Den synes jeg ikke virker, Eagleeye.

Prøv selv på samme adresse.
Avatar billede eagleeye Praktikant
20. maj 2002 - 22:52 #28
Det virker fint...Du skal starte en helt ny IE ikke bare lave et nyt vindue med CTRL-N for så deles IE om session objectet på en eller anden måde.
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:52 #29
Gu gør den så. Det var fordi jeg stadig havde dette vindue åbent. Smart nok !!
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:53 #30
(o;
Avatar billede baitianlong Nybegynder
20. maj 2002 - 22:54 #31
Den er vel bedre uden reload-fest ? Mere rigtig
Avatar billede eagleeye Praktikant
20. maj 2002 - 22:58 #32
Ja den er mere rigitg for antal besøgne hvis du skire mod reload/refresh knap "misbrug".

Men du bestemmer hvad din counter skal vise. Det var for at vise, at du havde den mulighed for "sikring" :)
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