Avatar billede sbarnney Nybegynder
14. oktober 2002 - 15:16 Der er 21 kommentarer og
1 løsning

Randow row i tabel.

Til tblAnswer er der 4 tblQuestion. Dem vil jeg gerne vise som "random", hvorledes gør jeg det ?

------------------------ script start ----------------
<!--#include file="DBconn.asp"-->
<%
sql = "select * from tblAnswer where tblQuestion = 1"
set mrs = conn.execute(sql)
%>
<html>
<head>
    <TITLE></TITLE>
</head>
<body>
<table>
<%
if not mRS.Eof then
do while not mRS.Eof or mRS.Bof
mNr = mRS("id") 
mPoint = mRS("point")
%>
<tr>
  <td><input id="m<% = mNr %>" type="radio" name="point" value=""></td><td><%= mRS("answer") %></td>
</tr>
<%
  mRS.MoveNext
loop
end if
mRS.Close
set mRS = Nothing
%>
</table>
</body>
</html>
------------------------ script slut ------------------

MVH Stig
Avatar billede jelzin101 Praktikant
14. oktober 2002 - 15:18 #1
select * from tblAnswer where tblQuestion = 1 order by rand()
Avatar billede eagleeye Praktikant
14. oktober 2002 - 15:21 #2
<%
Set mrs = Server.CreateObject("ADODB.RecordSet")

sql = "select * from tblAnswer where tblQuestion = 1"

mrs.Open strSQL, Conn, 3, 1
rndMax = CInt(mrs.RecordCount)

Randomize
rndNumber = Int((RND * rndMax))    'Find et random nummer
mrs.Move rndNumber    'Flyt til den første valgte record

'Udksirv fra recordet et her..
Response.Write mrs("kolonne") 

mrs.Close
%>
Avatar billede sbarnney Nybegynder
14. oktober 2002 - 15:24 #3
Det kan jeg ikke få til at virke, den viser slet ikke noget på siden når "order by rand()" kommer på.

Stig
Avatar billede eagleeye Praktikant
14. oktober 2002 - 15:30 #4
hvis du bruger Access kan du bruge en SQL som denne:

SQL = "select * from tblAnswer where tblQuestion = 1 order by rnd"

Men min erfaring er at den altid giver den samme record ud når man bruger random (rnd) i SQL sætningen...
Avatar billede jelzin101 Praktikant
14. oktober 2002 - 15:31 #5
eagleeye>> det er nu nok fordi du skal bruge noget jeg gætter på hedder srnd = time eller sådan noget... inden
Avatar billede eagleeye Praktikant
14. oktober 2002 - 15:33 #6
hvordan gør man så det via SQL?
Avatar billede eagleeye Praktikant
14. oktober 2002 - 15:33 #7
eller skulle det være nok at skrive det i koden??  Sådan her:


Randomize
SQL = "select * from tblAnswer where tblQuestion = 1 order by rnd"
Avatar billede sbarnney Nybegynder
14. oktober 2002 - 15:36 #8
Hej eagleeye, vil du prøve at indsætte det i mit script.

Stig
Avatar billede eagleeye Praktikant
14. oktober 2002 - 15:44 #9
Prøv dette:


<!--#include file="DBconn.asp"-->
<html>
<head>
    <TITLE></TITLE>
</head>
<body>
<table>
<%
Set mrs = Server.CreateObject("ADODB.RecordSet")

sql = "select * from tblAnswer where tblQuestion = 1"

mrs.Open strSQL, Conn, 3, 1

if not mRS.Eof then
  rndMax = CInt(mrs.RecordCount)
  Randomize
  rndNumber = Int((RND * rndMax))    'Find et random nummer
  mrs.Move rndNumber    'Flyt til den første valgte record

  do while not mRS.Eof or mRS.Bof
    mNr = mRS("id") 
    mPoint = mRS("point")
%>
<tr>
  <td><input id="m<% = mNr %>" type="radio" name="point" value=""></td><td><%= mRS("answer") %></td>
</tr>
<%
  mRS.MoveNext
loop
end if
mRS.Close
set mRS = Nothing
%>
</table>
</body>
</html>
Avatar billede eagleeye Praktikant
14. oktober 2002 - 15:45 #10
første fejl... Denne linie:
mrs.Open strSQL, Conn, 3, 1

Skal være:

mrs.Open SQL, Conn, 3, 1
Avatar billede sbarnney Nybegynder
14. oktober 2002 - 15:47 #11
jeg får flg. fejl.

Microsoft OLE DB Provider for ODBC Drivers error '80040e24'
Rowset does not support fetching backward.

stig
Avatar billede eagleeye Praktikant
14. oktober 2002 - 15:53 #12
Prøv at indsætte denne:

mrs.CursorType = 3

Lige før:
mrs.Open SQL, Conn, 3, 1
Avatar billede sbarnney Nybegynder
14. oktober 2002 - 15:57 #13
Der opstod en Microsoft VBScript-kørselsfejl error '800a01a8'

Et objekt er obligatorisk: 'mrs'
Avatar billede eagleeye Praktikant
14. oktober 2002 - 16:13 #14
Denne linie skal være med i koden:
Set mrs = Server.CreateObject("ADODB.RecordSet")

Så man får defineret mrs som et recordset.
Avatar billede eagleeye Praktikant
14. oktober 2002 - 16:46 #15
Prøv evt at vise koden igen...
Avatar billede sbarnney Nybegynder
15. oktober 2002 - 08:09 #16
<html>
<head>
    <TITLE></TITLE>
</head>
<body>
<table>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set mrs = Server.CreateObject("ADODB.Recordset")
Conn.Open "EDUDSN", "edu", "edu"

sql = "select * from tblAnswer where Question = 1"

mrs.Open sql, Conn

if not mRS.Eof then
  rndMax = CInt(mrs.RecordCount)
  Randomize
  rndNumber = Int((RND * rndMax))    'Find et random nummer
  mrs.Move rndNumber    'Flyt til den første valgte record

  do while not mRS.Eof or mRS.Bof
    mNr = mRS("id") 
    mPoint = mRS("point")
%>
<tr>
  <td><input id="m<% = mNr %>" type="radio" name="point" value=""></td><td><%= mRS("answer") %></td>
</tr>
<%
  mRS.MoveNext
loop
end if
mRS.Close
set mRS = Nothing
%>
</table>
</body>
</html>
Avatar billede eagleeye Praktikant
15. oktober 2002 - 15:12 #17
prøv at rette linien:

mrs.Open sql, Conn

til:

mrs.Open sql, Conn, 3
Avatar billede eagleeye Praktikant
15. oktober 2002 - 15:13 #18
eller med både 3,1

mrs.Open sql, Conn, 3, 1
Avatar billede sbarnney Nybegynder
16. oktober 2002 - 13:45 #19
Det virker faktisk nu, MEN !!  der skal altid vises alle 4 records, bare i (random) rækkefølge.

Stig
Avatar billede eagleeye Praktikant
16. oktober 2002 - 22:39 #20
Skal du havde 4 tilfældige records ?

Jeg troede det var en tilfældig.
Avatar billede eagleeye Praktikant
16. oktober 2002 - 23:39 #21
hvis du vil hvade 4 til fældige records så prøv:

<html>
<head>
    <TITLE></TITLE>
</head>
<body>
<table>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set mrs = Server.CreateObject("ADODB.Recordset")
Conn.Open "EDUDSN", "edu", "edu"

sql = "select * from tblAnswer where Question = 1"
mrs.Open sql, Conn, 3, 1

antalRandom = 4
inDB = mrs.RecordCount
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)
  mrs.move myArr(i),1
   
  mNr = mRS("id") 
  mPoint = mRS("point")
%>
<tr>
  <td><input id="m<%= mNr %>" type="radio" name="point" value=""></td><td><%= mRS("answer") %></td>
</tr>
<%
next

mRS.Close
set mRS = Nothing
%>
</table>
</body>
</html>
Avatar billede sbarnney Nybegynder
18. oktober 2002 - 10:42 #22
Det er bare flot.

Stig
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