15. juli 2007 - 19:53Der er
15 kommentarer og 2 løsninger
Bannere: roterende rækkefølge pr. sidevisning
Hejsa Jeg er ved at lave et banner-script til min side, og der skal fungere sådan, at de enkelte bannere skiftet til at være nr.1. Den skal altså kunne huske hvordan de sidste blev vist. Hvis jeg eksempelvis har 4 bannere 1,2,3,4 og gerne se 3 af gangen skal de vises sådan her (de skifter pr. sidevisning)
1. sidevisning 1,2,3
2. sidevisning 2,3,4
3. sidevisning 3,4,1
4. sidevisning 4,1,2
5. sidevisning 1,2,3
og så videre....
Til at håndtere optællingen og huske hvorlangt jeg er kommet i optællingen har jeg forsøgt at bruge Application, og ud fra værdien i den flytte mig rundt til post som skal skrives ud først:
*************** id = cInt(request.QueryString("id")) intAntalannoncerTilUdskrivning = cInt(request.QueryString("antal")) strHusk = "HuskForId" & Id
strSQL = "SELECT count(*) as Found FROM banner" Set RS = Conn.Execute(strSQL)
intIalt = cInt(RS("Found")) 'Det antal bannere der findes i databasen
strSQL = "SELECT * FROM banner ORDER BY sortering" Set RS = Conn.Execute(strSQL)
for n = 1 to intAntalannoncerTilUdskrivning if Application(strHusk) > intIalt then Application(strHusk) = 0 end if if n = 1 then 'Flyt til den post vi er kommet til for i = 1 to Application(strHusk) - 1 RS.MoveNext if RS.EOF then RS.MoveFirst end if next else RS.MoveNext if RS.EOF then RS.MoveFirst end if end if
response.Write "skriv selve banneret ud" Next ***********************
Mit problem er (sjovt nok) at det ikke virker helt som det skal. Den "glemmer" nogle gange at flytte sig så den fx udskriver det samme 2 gange i træk inden den så igen begynder at flytte sig rundt...
Nogle der kan hjælpe med dette? Eller måske nogle der har en helt anden måde at gøre det på?
hvis nu du updater på banneret i databasen .. og laver et felt der hedder visninger .. hver gang du viser et banner.. så kan du bare trække de 3 bannere der er vist færrest gange..
Ja, men de kan jo godt være vist lige mange gange, det der er interessant er også om de har været øverst lige mange gange - derfor vil jeg gerne de kører i "rotation"
Det er helt meningen at ALLE sidevisninger tæller med - men jeg ved bare med 100% garanti - at i mit testeksempel er det mig og kun mig der laver sidevisninger...
*************** id = cInt(request.QueryString("id")) intAntalannoncerTilUdskrivning = cInt(request.QueryString("antal")) strHusk = "HuskForId" & Id
strSQL = "SELECT count(*) as Found FROM banner" Set RS = Conn.Execute(strSQL)
intIalt = cInt(RS("Found")) 'Det antal bannere der findes i databasen
strSQL = "SELECT * FROM banner ORDER BY sortering" Set RS = Conn.Execute(strSQL)
for n = 1 to intAntalannoncerTilUdskrivning if Application(strHusk) > intIalt then Application(strHusk) = 1 end if if n = 1 then 'Flyt til den post vi er kommet til for i = 1 to Application(strHusk) - 1 RS.MoveNext if RS.EOF then RS.MoveFirst end if next else RS.MoveNext if RS.EOF then RS.MoveFirst end if end if
tror fejlen ligger i at du har .. når den skulle starte forfra, sat strhusk til 0..
herover sættes den til 1 ved nulstilling.. for det passer med hver gang den nulstiller at den laver dobbelt.. og det kunne meget vel være en 0/1 fejl..
Er ikke lige ved min test PC nu - kommer senere i aften - men jeg mener bestemt at jeg prøvede netop det igår og resultatet var at den slet ikke flyttede sig - altså:
Hmmm - hvis der er et ulige antal til udskrivning så virker det her
**************** if n = 1 then 'Flyt til den post vi er kommet til for i = 1 to Application(strHusk) - 1 RS.MoveNext if RS.EOF then RS.MoveFirst end if next if Application(strHusk) = 0 AND intIaltUlige=true then RS.MoveNext if RS.EOF then RS.MoveFirst end if end if else RS.MoveNext if RS.EOF then RS.MoveFirst end if end if
Application.Lock Application(strHusk) = Application(strHusk)+1 if Application(strHusk) > intIalt then Application(strHusk) = 0 end if Application.Unlock end if ********************
Kan bare ikke få det til at virke hvis det er et lige antal ?
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.