Avatar billede zantiago Nybegynder
31. december 2003 - 09:59 Der er 9 kommentarer og
1 løsning

Random function

Hej Eksperter

Jeg har en randomfunction der virker fint til at udskrive 1 post fra en tabel.

Kan man ik fixe den så den kan udskrive nogle flere.. Jeg vil eksempelvis gerne kunne udskrive 10 poster, men det skal ikke være de samme 10 hver gang :o)

------------------------------------
<%
o = 0
Set RS_find_onlinegame = Server.CreateObject("ADODB.RecordSet")
RS_find_onlinegame.open "Select * From [onlinegames_spil] Order by id desc" , Conn_sites
do while not RS_find_onlinegame.EOF
  idlist_o = idlist_o & "," & RS_find_onlinegame("id")
  o = o + 1
  RS_find_onlinegame.movenext
loop
idlist_o = mid(idlist_o,2)
idarr_o = Split(idlist_o,",")
randomize
vinderID_onlinegame = idarr_o(Int(rnd * (Ubound(idarr_o)+1)))
%>
<%
Set rs_onlinegames = Server.CreateObject("ADODB.RecordSet")
rs_onlinegames.open "Select * From [onlinegames_spil] where id = " & VinderID_onlinegame & "" , Conn_sites
%>
<img src="../pictures/onlinegames/<%=rs_onlinegames("id")%>.gif" border="0"><br>
<font face="verdana" size="1"><%=rs_onlinegames("titel")%></font>
------------------------------------
Avatar billede eagleeye Praktikant
31. december 2003 - 10:12 #1
Jeg har engang lavet denne som kan finde X antal tilfældige..:


strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("abb.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
Conn.Open strDSN

Rs.Open "SELECT * FROM randomtabel", Conn,1,3
antalRandom = 10
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 rs("ID") & " ... " & rs("randomtext") & "<br>"

  next
end if
Rs.Close
Avatar billede eagleeye Praktikant
31. december 2003 - 10:13 #2
Et alterntiv er at lave det via SQL men det afhænger af hvilken database du bruger?
Avatar billede zantiago Nybegynder
31. december 2003 - 10:18 #3
Hey mester.. Godt at have dig oppe så tidligt ;o)
Jeg bruger Access :o)

Som du kan se kalder jeg min database ved at skrive Conn_sites - Hvordan putter jeg det ind i det du har lavet, så jeg ik skal kalde databasen fra selve siden?
Avatar billede eagleeye Praktikant
31. december 2003 - 10:20 #4
Conn_sites er den som hedder Conn i min kode.
Avatar billede eagleeye Praktikant
31. december 2003 - 10:21 #5
det bliver noget med:


Set rs = Server.CreateObject("ADODB.RecordSet")
Conn.Open strDSN

Rs.Open "Select * From [onlinegames_spil]", Conn_site,1,3
antalRandom = 10
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
%>
<img src="../pictures/onlinegames/<%=rs("id")%>.gif" border="0"><br>
<font face="verdana" size="1"><%=rs("titel")%></font>
<%
  next
end if
Rs.Close
Avatar billede eagleeye Praktikant
31. december 2003 - 10:22 #6
hmm denne linjen fjernes også lige:

Conn.Open strDSN
Avatar billede eagleeye Praktikant
31. december 2003 - 10:24 #7
men som sagt kan det laves via SQL når det er Access så prøv sådan her:

<%
randomize
R=clng(100000*rnd)
SQL = "SELECT TOP 10 * FROM onlinegames_spil ORDER BY rnd(-(ID)*" & R & ")"

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.open SQL, Conn_sites
do while not rs.EOF
%>
  <img src="../pictures/onlinegames/<%=rs("id")%>.gif" border="0"><br>
<font face="verdana" size="1"><%=rs("titel")%></font>
<%
  rs.Movenext
loop
%>

%>
Avatar billede eagleeye Praktikant
31. december 2003 - 10:26 #8
Du må prøve at "rode" med de to alterntiver, jeg skal lige smutte 1 times tid ;)
Avatar billede zantiago Nybegynder
31. december 2003 - 10:35 #9
Say no more :o) Takker endnu en gang...
Avatar billede zantiago Nybegynder
31. december 2003 - 13:54 #10
Egleeye -> Jeg er ked af at skulle spørge dig, men vil du ik lige gøre mig den tjeneste at kigge på: http://www.eksperten.dk/spm/445563

Jeg er vildt i tvivl om hvad det kan være - Vil gøre hvad som helst hvis du hjælper mig !!!!
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