Avatar billede kcdk Juniormester
15. januar 2004 - 19:04 Der er 12 kommentarer

X antal tilfældige billeder uden gentagelse

Jeg har lavet en kode som henter tilfældige billeder fra en db, men nu har jeg bohov for at sikre mig, at den ikek henter det samme billede to gange på samme tid. Der hentes nemlig x antal billeder af gange. Hvordan gøres det?

<%
antalRandom = rs("ABilPri")
inDB = rs.RecordCount
If inDB > antalRandom then
  Randomize timer
  newId = Int (rnd*inDB)
  strIndex = "," & newid & ","
  indexFound = 1
  Do while indexFound < antalRandom
    Do
      Newid = Int (rnd*inDB)
    Loop while inStr(strIndex,"," & newid & ",") > 0
    strIndex = strIndex & newid & ","
    indexFound = indexFound + 1
  Loop
  strIndex = mid (strIndex,2,len(strIndex)-2)
  myArr=split(strIndex,",",-1)
  For i = Lbound(myArr) to Ubound(myArr)
   
    rs.move myArr(i),1
       
   
        Response.write "<img src='billeder/random/" & rs("Titel") & "' border='1' width='150' height='150'>"
        Response.Write("<br><br>")
  next
 
end if
Avatar billede eagleeye Praktikant
15. januar 2004 - 19:19 #1
Den skulle ikke tage to ens. Det sikre den i dette styk kode:

    Do
      Newid = Int (rnd*inDB)
    Loop while inStr(strIndex,"," & newid & ",") > 0

Har du da problem med den tager flere ens?
Avatar billede kcdk Juniormester
15. januar 2004 - 19:27 #2
Ja, den tager tit 2 ens, men kan det være fordi der kun er ca. 15 billeder til rådighed og at der skal vises op til 8 billeder.
Avatar billede eagleeye Praktikant
15. januar 2004 - 19:31 #3
Du sikker på der ikke er flere af billederne som er der to gange i databasen??

Er det det rigtige recordset du bruger, umiddelbart ser det ud som om kolonne ABilPri er i samme tabel som billederne?
Avatar billede eagleeye Praktikant
15. januar 2004 - 19:33 #4
Du kan prøve at udskrive strIndex lige før man udskriver og tjek der ikke er to ens tal i listen

  myArr=split(strIndex,",",-1)
  Response.Write "strIndex = " & strIndex & ":<br>"
  For i = Lbound(myArr) to Ubound(myArr)
Avatar billede kcdk Juniormester
15. januar 2004 - 19:35 #5
Undskyld. Den forstår jeg ikke helt. ABilPri er hentet fra en db som angiver hvor mange billeder der skal bruges.
Avatar billede eagleeye Praktikant
15. januar 2004 - 19:39 #6
Ja ok. Og det er i samme db som billederne er?
Prøv i første omgang som vist i min kommentar 15/01-2004 19:33:55 og copy/paste evt tallene ind her.
Avatar billede kcdk Juniormester
15. januar 2004 - 19:43 #7
Præcis hvor skal den sættes ind og hvad skal den erstatte. Ja samme database, men ikke samme tabel.
Avatar billede eagleeye Praktikant
15. januar 2004 - 19:56 #8
Du skal bare tilføje dene linje:

Response.Write "strIndex = " & strIndex & ":<br>"

Lig før linjen:

For i = Lbound(myArr) to Ubound(myArr)
Avatar billede eagleeye Praktikant
15. januar 2004 - 19:57 #9
Så åbner og lukker du for rs imellem disse to linjer??

antalRandom = rs("ABilPri")
inDB = rs.RecordCount
Avatar billede eagleeye Praktikant
15. januar 2004 - 20:13 #10
Prøv at vise hvordan du åbner rs .
Avatar billede kcdk Juniormester
28. februar 2004 - 23:31 #11
Er helt på bar bund så jeg lukker
Avatar billede eagleeye Praktikant
28. februar 2004 - 23:33 #12
dårlig grund :)
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