Avatar billede crapman Nybegynder
20. februar 2004 - 11:04 Der er 3 kommentarer og
1 løsning

5 random poster fra en database

Hejsa,

Jeg har en billeddatabase i access, som jeg skal hive 5 tilfældige filnavne ud af....

Nogle der kan fortælle mig hvordan man gør det?

Jeg har et object åbent som hedder conn, som har forbindelse til databasen....
Avatar billede snowball Novice
20. februar 2004 - 11:21 #1
Jeg har selv brugt nedenstående kode til netop samme formål, så du kan jo prøve at kigge lidt på den og evt. rette den lidt til så den passer til dine forhold.

OBS: Jeg er ikke den store ASP haj, så jeg vil ikke afvise at der er noget som kan gøres bedre/hurtigere/smartere :)

<%
'Forbindelsen til databasen er allerede åben på dette tidspunkt
Dim strSQL
Dim i, j, k, ArraySize, tmpId
Dim PicArray(2) 'Antal billeder der skal findes (husk den starter fra 0!) Husk også at rette j og k variablerne!
Dim Exists

strSQL = "SELECT COUNT(Id) AS PicNo FROM pics" 'Find antal billeder i tabellen
Set rs = OConn.Execute(strSQL)
ArraySize = rs("PicNo")

ReDim IdArray(ArraySize)

strSQL = "SELECT Id FROM pics" 'Hent alle tilgængelige IDer fra tabellen
Set rs = OConn.Execute(strSQL)

i = 1
While Not rs.EOF 'Fyld arrayet op med tilgændelige IDer
  IDArray(i) = rs("Id")
  rs.MoveNext
  i = i + 1
Wend

Randomize

For j = 0 To 2 'Udvælg x antal tilfældige poster fra arrayet og tjek at IDet ikke allerede er blevet udtaget
  Exists = False

  Do
    tmpId = IdArray(Int(Rnd*ArraySize))
    For k = 0 To 2
      If PicArray(k) = tmpId Then
        Exists = True
      End If
    Next
  Loop Until Exists = False
 
  PicArray(j) = tmpId
Next

strSQL = "SELECT * FROM pics WHERE Id = " & PicArray(0) & " OR Id = " & PicArray(1) & " OR Id = " & PicArray(2) 'Hent de udvalgte billeder
Set rs = OConn.Execute(strSQL)

While Not rs.EOF 'Udskrid de udvalgte billeder
  Response.Write "<img border=""0"" src=""" & rs("sti_til_billede") & """ alt="""& rs("beskrivelse") & """ width=""150"" height=""100""><br><br>"
  rs.MoveNext
Wend

rs.close
set rs = nothing
OConn.Close
set OConn = nothing
%>
Avatar billede crapman Nybegynder
23. februar 2005 - 10:08 #2
Smid et svar.. :)
Avatar billede snowball Novice
23. februar 2005 - 12:01 #3
:)
Avatar billede eagleeye Praktikant
23. februar 2005 - 17:31 #4
Denne her virker fint for mig:

<%
randomize
R=clng(100000*rnd)
SQL = "SELECT TOP 5 * FROM Tabel ORDER BY rnd(-(ID)*" & R & ")"
%>
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