Avatar billede Slettet bruger
16. april 2008 - 11:25 Der er 25 kommentarer og
1 løsning

Tæl antal bannervisninger

Hej.
Jeg skal have lavet et eller andet så jeg kan tælle hvor mange gange et banner har været vist. Altså ikke når folk trykker på den, men visninger i alt. (Bare et .jpg banner).

Nogen der kan hjælpe mig?

Mvh.
Henrik
Avatar billede w13 Novice
16. april 2008 - 11:26 #1
Hvad skal det gemmes i?
Avatar billede softspot Forsker
16. april 2008 - 11:45 #2
Hvis du har mulighed for at sætte src på billedt/banneret, kan du lave en asp-fil som sender billedet og samtidig gemmer oplysninger om visningen.

Flg. gemmes i /visBanner.asp:

<%
dim imgName
imgName = Request.QueryString("b") & ""

if imgName <> "" then
  application.lock
  if application("shown") & "" = "" then
    application("shown") = 0
  end if
  application("shown") = application("shown") + 1
  application.unlock

  server.execute "/banners/" & imgName
end if
%>


Denne kan så kaldes således:

<img src="/visBanner.asp?b=banner1.jpg">
Avatar billede softspot Forsker
16. april 2008 - 11:46 #3
Nu gemmer denne version i Application, men det kan du selv omskrive til gemme i din database, hvis det er mere hensigtsmæssigt (hvilket det nok er). Eksemplet viser bare et muligt princip.
Avatar billede softspot Forsker
16. april 2008 - 11:49 #4
Hvis den skulle være helt vild avanceret (;-)), så burde den måske nok skelne mellem hvilke bannere der blev vist:

<%
dim imgName
imgName = Request.QueryString("b") & ""

if imgName <> "" then
  application.lock
  if application("shown_" & imgName) & "" = "" then
    application("shown_" & imgName) = 0
  end if
  application("shown_" & imgName) = application("shown_" & imgName) + 1
  application.unlock

  server.execute "/banners/" & imgName
end if
%>
Avatar billede Slettet bruger
16. april 2008 - 12:20 #5
Hej Softspot.
Mange tak for det. :-)
Kan du evt. også hjælpe med at ændre det til at virke med database, er ikke den store haj til at være kreativ. Så er du rar :-)
Avatar billede softspot Forsker
16. april 2008 - 13:53 #6
Så skal du lige give mig lidt flere oplysninger om, hvilken database der er tale om(Access og SQL Server kan jeg hjælpe dig med, MySQL har jeg desværre ikke nogen erfaring med). Har du en tabel hvor data kan gemmes og i så fald hvordan den ser ud, dvs. hvilke felter den indeholder og hvilken type de enkelte felter har.
Avatar billede Slettet bruger
16. april 2008 - 14:18 #7
Super.. :-)
Jeg har en access database og en tabel der hedder "images".
Jeg retter bare felterne til efter hvad du mener der skal være i dag.. :-)
Avatar billede Slettet bruger
16. april 2008 - 14:19 #8
i den skulle der stå.. :-)
Avatar billede softspot Forsker
16. april 2008 - 14:35 #9
Umiddelbart ville jeg jo mene at der bare skulle være et felt med filnavnet (lad os kalde det bannernavn og sæt typen til tekst med længden 150) og et med antal visninger (kald det antalVisninger og sæt typen til tal). Så det må bliver noget i stil med:

<%
dim imgName
imgName = Request.QueryString("b") & ""

if imgName <> "" then
  connStr = "...dine connectionoplysninger..."
  set conn = Server.CreateObject("ADODB.Connection")
  conn.Open connStr
  sql = "UPDATE bannere " & _
        "SET antalVisninger = antalVisninger + 1 " & _
        "WHERE bannernavn = ?"
  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = conn
  cmd.CommandType = adCmdText
  cmd.CommandText = sql
  cmd.Parameters.Append cmd.CreateParameter("@bannernavn", adVarChar, adParamInput, 150, imgName)
  call cmd.Execute()
  conn.close

  server.execute "/banners/" & imgName
end if
%>
Avatar billede Slettet bruger
17. april 2008 - 09:19 #10
Super, jeg prøver det lige lidt senere idag.. :-)
Avatar billede Slettet bruger
24. april 2008 - 11:38 #11
Hey.
Jeg har ikke glemt dig og jeg prøver det inden længe, vi har bare haft noget alvorligt sygdom i familien så tiden har ikke lige været her. Og stadig tak indtil videre. :-)
Mvh.
Henrik
Avatar billede Slettet bruger
06. maj 2008 - 21:17 #12
Hej softspot, er du stadig med i tråden? :-)
Avatar billede softspot Forsker
06. maj 2008 - 21:18 #13
Yes! :)
Avatar billede Slettet bruger
06. maj 2008 - 21:35 #14
Super.. :-)
Så fik jeg endelig tid til at rode med det.. :-)
Jeg har nu prøvet, men er gået lidt kold... Har nedenstående kode.
Har lavet en database der hedder testbanner.mdb med tabellen banner
og de to felter du skrev.

Har kaldt den med visbanner.asp?b=apollo.gif

Er det helt forkert? :-)

<%
dim imgName
imgName = Request.QueryString("b") & ""

if imgName <> "" then


connStr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/database/testbanner.mdb")
  set conn = Server.CreateObject("ADODB.Connection")
  conn.Open connStr
  sql = "UPDATE banner " & _
        "SET antalVisninger = antalVisninger + 1 " & _
        "WHERE bannernavn = apollo.gif"
  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = conn
  cmd.CommandType = adCmdText
  cmd.CommandText = sql
  cmd.Parameters.Append cmd.CreateParameter("@bannernavn", adVarChar, adParamInput, 150, imgName)
  call cmd.Execute()
  conn.close

  server.execute "/ads/" & imgName
end if
%>
Avatar billede Slettet bruger
06. maj 2008 - 21:47 #15
Den kommer forresten med denne fejl:

ADODB.Command error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/visbanner.asp, line 16
Avatar billede Slettet bruger
06. maj 2008 - 21:55 #16
Er jeg helt gal på den? :-)
Avatar billede softspot Forsker
06. maj 2008 - 23:32 #17
Når du benytter command-objektet og parametre, skal du indsætte en pladsholder for parameterens værdi i din SQL-streng i stedet for en værdi. Det ser i dit tilfælde således ud:

sql = "UPDATE banner " & _
      "SET antalVisninger = antalVisninger + 1 " & _
      "WHERE bannernavn = ?"

set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = sql
cmd.Parameters.Append cmd.CreateParameter("@bannernavn", adVarChar, adParamInput, 150, imgName)
call cmd.Execute()

Resten af koden ser umiddelbart OK ud :-)
Avatar billede Slettet bruger
07. maj 2008 - 14:11 #18
Okay.. Jeg har skiftet det ud nu, men et giver stadig samme fejl...

ADODB.Command error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/visbanner.asp, line 17

Linje 17 er følgende:

cmd.CommandType = adCmdText

Mvh.
Henrik
Avatar billede softspot Forsker
07. maj 2008 - 14:26 #19
Prøv lige at indsætte denne linie som den ALLERFØRSTE i din asp-side:

<!-- METADATA TYPE="typelib" uuid="00000205-0000-0010-8000-00AA006D2EA4"  -->

Den skulle give dig adgang til at benytte ADO-konstanterne, så som adCmdText..
Avatar billede Slettet bruger
07. maj 2008 - 15:11 #20
Yes sir!!! Så virker det.. :-)
Kanon... Mange Mange tak for hjælpen...

Lige et par ekstra spørgsmål hvis du skulle have tid... :-)
Hvordan sætter jeg et url på banneret så de er link på banneret?

Og hvis jeg vil have flere bannere, skal jeg sætte hele koden ind
for hvert banner, eller kan jeg lave noget smart?

Send bare svar.. :-)

Mvh.
Henrik
Avatar billede Slettet bruger
07. maj 2008 - 15:35 #21
Og lige et andet spørgsmål. Hvis jeg placerer den på min side, så vises der intet andet..... Skal jeg lave den om en indbygget ramme eller hvordan gør jeg det?
Avatar billede softspot Forsker
07. maj 2008 - 16:06 #22
Som jeg skrev i det opringelige indlæg (16/04-2008 11:45:52), skal denne kode kaldes via et img-element, altså:

<img src="/visBanner.asp?b=banner1.jpg">

så det billede med banneret skal bare indgå i din side som ethvert andet billede du ville sætte ind på din side.

Hvis du vil lave et link ud af billedet/banneret, skal det nok laves lidt anderledes, da du så ikke længere bare kan nøjes med at sende et billede tilbage, så skal du sende HTML tilbage (eller noget som bliver til HTML). Dette kunne f.eks. gøres ved at du indsætter et javascript som genererer koden til et link med et billede...

<%
dim imgName
imgName = Request.QueryString("b") & ""

if imgName <> "" then
  connStr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/database/testbanner.mdb")
  set conn = Server.CreateObject("ADODB.Connection")
  conn.Open connStr
  sql = "UPDATE banner " & _
        "SET antalVisninger = antalVisninger + 1 " & _
        "WHERE bannernavn = ?"

  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = conn
  cmd.CommandType = adCmdText
  cmd.CommandText = sql
  cmd.Parameters.Append cmd.CreateParameter("@bannernavn", adVarChar, adParamInput, 150, imgName)
  call cmd.Execute()

  ' indlæs bannerdata igen, så url kan genereres til linket
  sql = "SELECT * " & _
        "FROM banner " & _
        "WHERE bannernavn = ?"

  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = conn
  cmd.CommandType = adCmdText
  cmd.CommandText = sql
  cmd.Parameters.Append cmd.CreateParameter("@bannernavn", adVarChar, adParamInput, 150, imgName)
  set rs = cmd.Execute()
  if not rs.eof then
%>
  document.write("<a href='<%=rs("bannerlink")%>' target='_blank'>");
  document.write("<img src='/ads/<%=rs("bannernavn")%>' border=0></a>");
<%
  end if
  rs.close
  set rs = nothing
  conn.close
  set conn = nothing
end if
%>

I stedet for at kalde asp-siden med et IMG-tag, skal det i stedet kaldes med et SCRIPT-tag, således:

<script type="text/javascript" src="/visbanner.asp?b=banner1.jpg"></script>

NB: Din tabel med bannere skal så udvides med et felt mere, som hedder bannerlink, hvori linket som banneret skal udløse ligger...

NB: Det er totalt utestet, så det kan godt være der lige skal justeres lidt på det genererede script!
Avatar billede Slettet bruger
07. maj 2008 - 17:47 #23
Super fedt! Jeg prøver lige.. :-) Tak igen..
Avatar billede Slettet bruger
07. maj 2008 - 18:11 #24
Det fungerer bare helt perfekt!!!! KANON!
Jeg siger mange tak for hjælpen.. :-)
Ærgeligt man ikke kan sende en kold øl her igennem, det har du fortjent! ;-)
Mvh.
Henrik
Avatar billede softspot Forsker
07. maj 2008 - 20:45 #25
Velbekomme og tak for point (og virtuel øl ;-))
Avatar billede Slettet bruger
14. maj 2008 - 07:54 #26
Så lidt... Det var dejligt at få det til at virke.. :-)
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