Avatar billede ml Nybegynder
03. november 2000 - 23:13 Der er 7 kommentarer og
4 løsninger

5 tilfældige poster fra database..... ?

Jeg skal hive 5 tilfældige (random) poster ud af en database.. De må selvfølgelig ikke være ens...

Hvordan gørres dette lettest, og så det belaster serveren mindst muligt ?
Avatar billede bacardil Nybegynder
03. november 2000 - 23:40 #1
Jeg kender ikke noget i ASP men i java, hvis det har interesse kan der findes et eksemplar her: http://www.asp.dk/sourcecode.asp?mode=info&;source_id=615

Der er det bare en .TXT fil i stedet for en database......
Avatar billede stig3 Mester
03. november 2000 - 23:41 #2
Avatar billede ml Nybegynder
03. november 2000 - 23:45 #3
Nej, det skal være ASP, og jeg kan godt lave så den tager én tilfældig, men den skal tage 5 (eller flere) tilfældige poster, som ikke er ens....
Avatar billede phylox2 Nybegynder
04. november 2000 - 00:33 #4
Så har jeg løsningen til dig!

<%

Set Conn    = Server.CreateObject(\"ADODB.Connection\")
FilePath    = Server.MapPath(\"database.mdb\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & FilePath & \";\"

strSQL = \"SELECT Count(ID) AS Antal FROM Sider\"
Set RS_Antal = Conn.Execute(strSQL)

Antal = RS_Antal(\"Antal\")

Dim tal()
Redim preserve tal(Antal)
randomize
for i=1 to antal
tal(i)=i
next
for i=1 to antal
  x=Int(Rnd*antal)+1
  tmp=tal(x)
  tal(x)=tal(i)
  tal(i)=tmp
next
for i=1 to 5

strSQL = \"SELECT * FROM Sider WHERE ID = \" & tal(i) & \"\"
Set RS = Conn.Execute(strSQL)

Response.Write RS(\"ID\") & \" - \" & RS(\"Tekst\") & \"<br>\" & vbcrlf

next

%>
Avatar billede runesoft Nybegynder
04. november 2000 - 14:12 #5
>phylox2 -> Meget smart! Så vidt jeg kan se antager du at alle ID\'erne i databasen eksisterer (der må altså ikke være poster der er blevet slettet), eller hvad. Forklar venligst...
Avatar billede phylox2 Nybegynder
04. november 2000 - 22:37 #6
Ja, det må vist ikke være nogle, der er blevet slettet - men det kan være, man kan finde ud af noget mht. det ...
Avatar billede runesoft Nybegynder
05. november 2000 - 12:10 #7
Jeg tror der er lidt inspiration til at løse det her: http://www.eksperten.dk/spm/29871

Jeg tror kun det er tilrådeligt at bruge arrRecords = rs.Getrows
delen.  Resten tror jeg ikke virker :-)
Avatar billede ml Nybegynder
05. november 2000 - 15:33 #8
JA, den må ikke melde fejl hvis en post er slettet, for der vil med tiden uden tvivl blive slettet nogle poster.....

Hvordan gør jeg det så ??  (o:
Avatar billede stoffer Nybegynder
06. november 2000 - 11:32 #9
det er da nemt at und¨gå den fejl:


for i=1 to 5

strSQL = \"SELECT * FROM Sider WHERE ID = \" & tal(i) & \"\"
Set RS = Conn.Execute(strSQL)

if not (RS.EOF) then
  \'hVIS RECORD FINDES
  Response.Write RS(\"ID\") & \" - \" & RS(\"Tekst\") & \"<br>\" & vbcrlf

  \' Kør forfra
  else
  i = i - 1
end if

next

Avatar billede mite Nybegynder
08. november 2000 - 11:12 #10
Her er en anden løsning.
Function Random har jeg, så vidt jeg lige husker, set her på Eksperten.

Ik´ så meget snak...her er koden.

<%
Function Random(MaxTal,i)
  Randomize
  DIM NytTal, EnsTemp
  EnsTemp = 1
  NytTal = Int(Rnd * MaxTal) 
  DO WHILE EnsTemp>0
    EnsTemp = 0
    FOR j=1 TO i-1
      IF Randnum(j) = NytTal THEN
        EnsTemp=EnsTemp+1
        NytTal = Int(Rnd * MaxTal)  +1
        NytTal = Int(Rnd * MaxTal) 
        EXIT FOR
      END IF
    NEXT
  LOOP
  Random = NytTal
END FUNCTION

Set tempConn = Server.CreateObject(\"ADODB.Connection\")
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"NavnPåDb.mdb\")
tempConn.Open strDSN

\'Tæller samtlige link
    antal = \"SELECT COUNT(ID) AS Antal FROM tabelnavn\"
    set rs = tempConn.execute(antal)

rs.movefirst
antalposter = rs(\"antal\")
count=0

strSQL = \"SELECT felt, felt1 FROM tabelnavn\"
set link = tempConn.execute(strSQL)

\'Findet et tilfældigt tal 5 gange
dim Randnum(5)
for i=1 to 5
link.movefirst
Randnum(i) = Random(antalposter,i)

link.move randnum(i)
    strfelt = link(\"felt\")
    strfelt1 = link(\"felt1\")
    Response.Write strfelt & \", \" & strfelt1 & \"<br>\"
next

\'Lukker og slukker pænt efter os
tempConn.Close
set tempConn = Nothing
set rs = nothing
set link = nothing
%>
Avatar billede ml Nybegynder
20. april 2001 - 10:36 #11
Kunne ikke få nogle af dem til at virke rigtigt. Da det ikke længere er aktuelt lukker jeg spørgsmålet :)
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