mikulMedlem sedan aug. 20013 824 inlägg Tja...
jag har fått lite problem med mitt slumpscript som ska retunera 4 olika poster...
den retunerar 4 likadana poster...
OBS!! koden är lite stökig nu...jag har nämligen testat lite allt möjligt....
<%
'--> Här fyller du i antalet slumpningar
'Dim intAntalSlumptal
const intAntalSlumptal = 4
Dim rndArray()
'--> Öppnar databasen
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("forum.mdb")&";"
'--> Skapa Arrayen och ett slumpat tal.
Set objrs = objCon.Execute("SELECT * FROM asp")
RecArray = objrs.GetRows()
objrs.Close : Set objrs = Nothing
objCon.Close : Set objCon = Nothing
'--> Skapa alla slumptalen och lägger dom i en array
Randomize
Redim rndArray(4)
For i = 0 To intAntalSlumptal
rndArray(i) = int(rnd*UBound(RecArray,2))
Next
intRecCount = LBound(RecArray,2)
intRecCounted = 0
'--> Bläddra fram till posten
Do while not intRecCount > UBound(RecArray,2) OR intRndcounted = intAntalSlump
'--> Kollar om posten stämmer med slumptalet
If intRecCount = rndArray(intRecCounted) Then
intRecCount = LBound(RecArray,2)
intRndcounted = intRndcounted + 1
rndArray(0) = rndArray(cint(intRecCounted+1))
'-->skriver ut posten om det nu är rätt post
For intFieldCount = LBound(RecArray,1) To UBound(RecArray,1)
Response.write "<table border=1> <tr>"&_
"<td>"& RecArray(intFieldCount, intRecCount) &"</td>"&_
"</tr> </table>"
Next
intRndCount = Cint(intRndCount+1)
If intRndCounted = intAntalSlumptal Then Exit Do
else
intRecCount = intRecCount + 1
End if
Loop
%>
/ Mikul
Scriptmotorn slumpar enligt en viss algoritm och mönster och påverkar ingenting den uppkommer alltid samma tal! Använd Radomise() + rnd så ska det nog fungera...
(finns en artikel om det på http://4guysfromrolla.com)
:)
mikulMedlem sedan aug. 20013 824 inlägg jag kan tyvärr inte hitta artikeln...
kan du inte dra ett exempel på hur det ska se ut???
/ Mikul
PaceMedlem sedan juni 20019 024 inlägg Okej, då är det koden för att "bläddra fram till posten" som är fel. En enklare variant:
intSlump1 = RecArray(0, rndArray(0))
intSlump2 = RecArray(0, rndArray(1))
intSlump3 = RecArray(0, rndArray(2))
intSlump4 = RecArray(0, rndArray(3))
mikulMedlem sedan aug. 20013 824 inlägg så här ser det ut nu:
<%
'--> Här fyller du i antalet slumpningar
'Dim intAntalSlumptal
const intAntalSlumptal = 4
Dim rndArray()
'--> Öppnar databasen
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("forum.mdb")&";"
'--> Skapa Arrayen och ett slumpat tal.
Set objrs = objCon.Execute("SELECT * FROM asp")
RecArray = objrs.GetRows()
objrs.Close : Set objrs = Nothing
objCon.Close : Set objCon = Nothing
'--> Skapa alla slumptalen och lägger dom i en array
Redim rndArray(4)
Randomize Timer()
Dim tmpRnd
Dim tmpArr(4)
tmpRnd = 0
While not Cint(tmpRnd) = intantalslumptal
rndArray(Cint(tmpRnd)) = int(rnd*UBound(RecArray,2))
For i = 0 To intAntalSlumptal
If rndArray(i) = rndArray(tmpRnd) Then
tmpRnd = tmpRnd - 1
End if
Next
tmpRnd = tmpRnd + 1
Wend
'-->skriver ut posten om det nu är rätt post
for tmpRec = 0 To 4
For intFieldCount = LBound(RecArray,1) To UBound(RecArray,1)
Response.write "<table border=1> <tr>"&_
"<td>"& RecArray(intFieldCount, rndArray(tmpRec)) &"</td>"&_
"</tr> </table>"
Next
next
%>
men det värkar vara nåt fel här:
If rndArray(i) = rndArray(tmpRnd) Then
tmpRnd = tmpRnd - 1
End if
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '-1'
/Mikul/asp/test.asp, line 39