Avatar billede andersasp Nybegynder
03. februar 2004 - 19:42 Der er 13 kommentarer og
1 løsning

Statistik ved klik på billeder!

Jeg har et billedegalleri hvor hver gang der bliver oprettet et nyt galleri bliver oprettet en mappe f.eks. /12/!

mappens navn er ID´et fra en database tabel som hedder gallerier!

Alle billederne bliver FTPet direkte op på serveren i det enkelte biblotek da ASPupload tager for lang tid. Jeg skal dog nu have lavet en statisktik over antal klik pr billede fra hovedsiden hvor billederne bliver vist dynamisk (viser alt i de valgte gallerier/mapper), men da billedernes navne ikke ligger i en tabel ved jeg ikke hvordan jeg skal logge antal klik på dem!

Derfor vil jeg meget gerne have hjælp til enten få et script til at gemme alle filnavnene i en database relateret til tabellen gallerier.

Eller kender I til en bedre måde at logge kliks på???????
Avatar billede eagleeye Praktikant
03. februar 2004 - 19:55 #1
>>få et script til at gemme alle filnavnene i en database relateret til tabellen gallerier.
I dette spørgsmål http://www.eksperten.dk/spm/281323 er koden som kan scanne en folder igennem, den tager så alle subfoldere og smider filerne i databasen, men en kategori som subfolderen navn. Det kan naturligvis rettes i koden så det passer til dit.

For at logge kliks skal det gennems et sted og det må være en database.
Har du thumbnails af billederne??

så kunne man lave en fil som hedder visbillede.asp?id=3342  eller ?fil=dafd.gif
Og så opdater counteren i tabellen til filen og så vise billedet som angivet i querystringen.
Avatar billede andersasp Nybegynder
03. februar 2004 - 20:13 #2
Tak for det hurtige svar! det er vist lige det jeg skal bruge!

Ja jeg har thumbnails til billederne, jeg er dog ikke den bedste til at gennemskue disse lidt mere kompliserede scripts, så hvis du ville være behjælpelig ville det være helt kanon!

mine billeder ligger her:

c:\website\gallerier\1\thum\
c:\website\gallerier\2\thum\
Osv...

Den skulle så blot gemme filnavnene i de bibloteker som står efter gallerier\ og ikke dem i \thum\ da disse filnavne er nøjagtig ens!

Jeg havde tænkt på en tabel som hed gallerilog med felterne:

GID; Gnogle; Gbilledenavn; Gantalklik

Gnogle = ID´et på tabellen gallerier som også er mappenavnet!

Hvis du ville være behjælpelig med at omskrive koden ville jeg være yderst taknemmelig!
Avatar billede eagleeye Praktikant
03. februar 2004 - 20:23 #3
Ok, prøver lige at lave koden lidt om. Det er bare navnet som skal gennes i Gbilledenavn?
Avatar billede eagleeye Praktikant
03. februar 2004 - 20:44 #4
Her er koden som kan gemme filerne i databasen, den tjekke om filen findes inden den ligger den i databasen sådan der ikke er flere med samme navn og gnogle.
Den scanner alle folderne i gallerier 1, 2, 3 men ikke sub-foldere i 1,2,3.



<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db1.mdb")

Set fso = CreateObject("Scripting.FileSystemObject")

function saveFiles (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  Set objFiles = objFolder.Files
  catID = ""
  for each file in objFiles
    if InStr(1,"gif,jpg,jpeg,bmp", LCase(fso.GetExtensionName(file.name))) > 0 then
      if catID = "" then catID = objFolder.name
      SQL = "select * from gallerilog where Gnogle = " & catID & " AND Gbilledenavn = '" & file.name & "'"
      Set rs=Conn.Execute(SQL)
      if rs.EOF then
        SQL = "INSERT INTO gallerilog  (Gnogle, Gbilledenavn) VALUES (" & catID & ", '" & file.name & "')"
        Conn.Execute (SQL)
      end if
    end if
  next
  Set objFolder = Nothing
  Set objFiles = Nothing
end function



strPhysicalPath = "C:\website\gallerier\"
Set objFolder = fso.getFolder( strPhysicalPath )
Response.Write objFolder.path & "<br>"
For each Folder in objFolder.SubFolders
  Response.Write folder.path & "<br>"
  Response.Flush
  call saveFiles (folder.Path)
next

Response.Write "Sådan databasen er opdateret med filnavne."

Conn.Close
Set Conn = Nothing
Set fso = Nothing
%>
</BODY>
</HTML>
Avatar billede eagleeye Praktikant
03. februar 2004 - 20:49 #5
når du viser thumbnails kan du laves det sådan linket er til en ASP fil og ikke billedet direkte:


<a href="visbilled.asp?fil=01.jpg&cat=1"><img src="/gallerier/1/thum/thum_01.jpg"></a>


visbilled.asp  filen kan laves i stil med:

<%
catID = request.querystring("cat")
fil = request.querystring("fil")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db1.mdb")

SQL = "update gallerilog set Gantalklik=Gantalklik+1 where Gnogle = " & catID & " AND Gbilledenavn = '" & fil & "'"
Conn.Execute(SQL)
Conn.Close
%>
<img src="/gallerier/<%=catID&"/"&fil%>">
Avatar billede andersasp Nybegynder
03. februar 2004 - 23:35 #6
Tusinde tak for hjælpen!

Jeg giver lige points når du smider et svar!
Avatar billede eagleeye Praktikant
03. februar 2004 - 23:42 #7
Ok ;)
Her er et svar.
Avatar billede andersasp Nybegynder
04. februar 2004 - 10:53 #8
Hej eagleeye!

Det er et helt kanon script du har udarbejdet!

Første gang man kører det virker det perfekt, men når man opretter endnu et galleri og kører scriptet igen for at lagre de nye billeder kommer den med fejl i denne linie:

      Set rs=Conn.Execute(SQL)

Der kan fremkomme ens billede navne, men aldrig i det samme biblotek

Jeg vil godt ligge nogle flere points, da jeg har godkendt en gang!!
Avatar billede andersasp Nybegynder
04. februar 2004 - 10:54 #9
Fejlen er:

Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.
Avatar billede eagleeye Praktikant
04. februar 2004 - 17:21 #10
Hvilken type er kolonnen  Gnogle  ?
Avatar billede andersasp Nybegynder
04. februar 2004 - 17:29 #11
Gnogle er tekst!

Der er ingen relationer i access mellem gallerier og gallerilog!
Avatar billede andersasp Nybegynder
04. februar 2004 - 17:41 #12
OK dit spørgsmål var vist svar i sig selv :)
Avatar billede eagleeye Praktikant
04. februar 2004 - 17:44 #13
ok :)
jeg troede det var tal.. Så skal der lige ' omkring SQL sætningerne sådan her:

SQL = "select * from gallerilog where Gnogle = '" & catID & "' AND Gbilledenavn = '" & file.name & "'"
Avatar billede eagleeye Praktikant
04. februar 2004 - 17:45 #14
Og det gælder dem alle hvor Gnogle indgør som denne, som så bliver til:

      if rs.EOF then
        SQL = "INSERT INTO gallerilog  (Gnogle, Gbilledenavn) VALUES ('" & catID & "', '" & file.name & "')"
        Conn.Execute (SQL)
      end if
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