Avatar billede bjarke-b Nybegynder
31. marts 2001 - 15:56 Der er 4 kommentarer og
1 løsning

Banner rotering

Hejsa, jeg har nu siddet i et godt stykke tid og rodet med et banner system, jeg har lavet det sådan man kan vælge om der skal være ratio på det banner man lægger ind, og hvor mange visninger det max skal have hvis man har valgt ratio.

Det virker jo fint nok, men nu kom det store problem, jeg har denne kode der tager et random banner.

Problemet er følgende:
Hvis et banner nu har ratio på og der ikke er flere visninger tilbage på dens konto og det er den post der bliver taget skal den vælge et andet banner.


koden:
________________________________________

<meta http-equiv=\"refresh\" content=\"20\">
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.Mappath(\"banners.mdb\")
Set rs = Server.CreateObject(\"ADODB.Recordset\")
Sql = \"Select * from banner\"
rs.open sql, conn, 1, 3
randomize
rs.Move(int(rs.RecordCount * rnd))
   
    if rs(\"bannerratio\") = true then
        if rs(\"bannerratiosize\") = \"0\" then
            rs.Move(int(rs.RecordCount * rnd))
        else
       
        rs.update
        rs(\"bannerratiosize\") = rs(\"bannerratiosize\") - 1
        rs.update
        end if
    end if



    rs.update
    rs(\"bannershown\") = rs(\"bannerShown\") + 1
    rs.update
%>
<a target=_new href=http://localhost/webmasterguide.dk/banner/banner_click.asp?id=<%=rs(\"bannerid\")%>>
<img border=0 src=\"banners/<%=rs(\"bannerid\")%>.<%=rs(\"bannertype\")%>\" alt=\"<%=rs(\"bannertitel\")%>\">
<%
rs.close
set rs = nothing
conn.close
set conn = nothing
%>
________________________________________
Avatar billede nute Nybegynder
31. marts 2001 - 16:06 #1
kan du ikke bare bytte om din SQL til

Sql = \"SELECT * FROM banner WHERE bannerratiosize > 0\"

så slipper du for din ene if-clause..?

/nute
Avatar billede bjarke-b Nybegynder
31. marts 2001 - 16:08 #2
nute -> Nej, for det er ikke alle bannere der er ratio på
Avatar billede bjarke-b Nybegynder
31. marts 2001 - 16:10 #3
I kan her se bannerkoden uden det ratio:

<meta http-equiv=\"refresh\" content=\"20\">
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.Mappath(\"banners.mdb\")
Set rs = Server.CreateObject(\"ADODB.Recordset\")
Sql = \"Select * from banner\"
rs.open sql, conn, 1, 3
randomize
rs.Move(int(rs.RecordCount * rnd))


    rs.update
    rs(\"bannershown\") = rs(\"bannerShown\") + 1
    rs.update
%>
<a target=_new href=http://localhost/webmasterguide.dk/banner/banner_click.asp?id=<%=rs(\"bannerid\")%>>
<img border=0 src=\"banners/<%=rs(\"bannerid\")%>.<%=rs(\"bannertype\")%>\" alt=\"<%=rs(\"bannertitel\")%>\">
<%
rs.close
set rs = nothing
conn.close
set conn = nothing
%>

Det skal laves om til at den tjecker om feltet BANNERRATIO er = true, og hvis det er = true skal den se om feltet bannerratiosize er større end 0.

Hvis feltet bannerratiosize så er = 0 skal den vælge et nyt banner og tjecke banneret for det samme.
Avatar billede bjarke-b Nybegynder
31. marts 2001 - 16:17 #4
Fandt selv ud af det :-)
Avatar billede nute Nybegynder
31. marts 2001 - 16:18 #5
oki....problemet ditt ligger jo i denne stumpen med kode:

    if rs(\"bannerratio\") = true then
        if rs(\"bannerratiosize\") = \"0\" then
            rs.Move(int(rs.RecordCount * rnd))
        else
       
        rs.update
        rs(\"bannerratiosize\") = rs(\"bannerratiosize\") - 1
        rs.update
        end if
    end if

den første if er jo ok, men den annen if antar jo faktisk at det neste banneret har gyldige egenskaper for fremvisning...det går ikke. Det du bør lage er en metode som sjekker om det neste banneret har ratio...med andre ord så er ideen noe lignende dette:

randomize
number = int(rs.RecordCount * rnd)
if ( checkBanner( number ) = \"true\" ) then

else

end if

function checkBanner( number )
  rs.Move( number )
  if rs(\"bannerratio\") = true then   
    if rs(\"bannerratiosize\") = \"0\" then
      number = int(rs.RecordCount * rnd)
      Call checkBanner( number )
    else
      rs.update
      rs(\"bannerratiosize\") = rs(\"bannerratiosize\") - 1
      rs.update
    end if
  end if
  checkBanner = \"true\"
end sub

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