Avatar billede flodhesten Nybegynder
29. april 2007 - 20:33 Der er 3 kommentarer og
1 løsning

Tilfældig recordset fra database

Hej eksperter.

Jeg mangler lidt hjælp til at lave et system, der finder 10 tilfælddige recordset id i min access database, og skal gemme hver enkelt id i 10 forskellige sessions, henholdsvis session("s1"), session("s2") osv... Det skal dog ikke være muligt at få 2 sessions med samme id.

Er der nogen der kan hjælpe mig med dette?

På forhånd tak.
Avatar billede loukas Mester
29. april 2007 - 23:22 #1
Snuppet direkte fra: http://www.eksperten.dk/spm/202164
Men noget i den her stil må kunne gøre det.

Rs.Open "SELECT * FROM abbtabel", myConn,1,3
inDB = rs.RecordCount
If inDB > 5 then
  Randomize timer
  newId = Int (rnd*inDB)
  strIndex = "," & newid & ","
  indexFound = 1
  Do while indexFound <10
    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 " UDSKRIV DATA HER med rs(""FELT"") .... "
    'gemmer i session
    session("s"&i&"") = rs(""FELT"")

  next
end if
Rs.Close
Avatar billede flodhesten Nybegynder
30. april 2007 - 18:47 #2
Se lige efter om det her ser helt galt ud:

<%
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open("database.mdb")
Rs.Open "SELECT * FROM questions", myConn,1,3
inDB = rs.RecordCount
If inDB > 5 then
  Randomize timer
  newId = Int (rnd*inDB)
  strIndex = "," & newid & ","
  indexFound = 1
  Do while indexFound <10
    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") & ""
    'gemmer i session
    session("s"&i&"") = rs("id")

  next
end if
Rs.Close
%>

Det virker i hvert fald ikke, jeg får bare "Siden kan ikke vises" og jeg ved ikke hvorfor jeg ikke får nogen fejlmeldelse, på trods af, at jeg har slået det til.
Avatar billede flodhesten Nybegynder
30. april 2007 - 20:52 #3
Hmm, det her virker:

<%
Constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb")
set cn = server.createobject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
cn.connectionstring=constr
cn.open

Rs.Open "SELECT * FROM questions", Cn,1,3
inDB = rs.RecordCount
If inDB > 5 then
  Randomize timer
  newId = Int (rnd*inDB)
  strIndex = "," & newid & ","
  indexFound = 1
  Do while indexFound <2
    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") &"<br>"
    session("s"&i&"") = rs("id")
  next
end if

RS.Close
Set RS = Nothing
Cn.Close
Set Cn = Nothing
%>


Men den giver ikke de rigtige sessions... Det skal være sådan at man får: session("s1") = random number, session("s2") = random number, session("s3") = random number... osv op til 10...

De session navne skal være unikke heletiden, så hvis jeg skriver session("s10") i bunden af mit dokument, vil den give mig det tilfældige tal i session 10.

Kan nogen hjælpe mig med det?
Avatar billede flodhesten Nybegynder
12. maj 2007 - 19:21 #4
Bliver vist desværre ikke til noget.
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