有時候需要隨機調取數據庫里的記錄,在頁面上隨機的顯示一些內容,。有些朋友設置隨機數,形成數組后,用表里的id來調用。用這種方法調用會出現調用被刪除記錄的情況。
實際上,如果隨機調用n條記錄,必須調用有效的數據。以下代碼就是隨機調用4條記錄。調用過程是:首先取得全部數據的id數組,然后根據數組的長度,在數組長度范圍內,產生4隨機數,再調用數組里的數據,這個數據就是真實存在的id。這樣就可以真實的調用存在數據的記錄了。
<%
dim srs,str,arr,snum
set srs=server.CreateObject("adodb.recordset")
ssql="select MovieID from Movietable where MovieFlag1=0" '首先調用全部的id。
srs.open ssql,conn,1,1
snum=srs.recordcount
if snum>4 then '如果全部記錄條數大于4,才隨機調取。
do while not srs.eof
if str="" then '把id寫進str。
str=srs("MovieID")
else
str=str&"|"&srs("MovieID")
end if
srs.movenext
loop
arr=split(str,"|") '然后分隔成數組。
'================
for x=1 to 4
randomize()
if xstr="" then
xstr=cint(ubound(arr)*rnd())
else
xstr=xstr&"|"&cint(ubound(arr)*rnd())
end if
next
xrand=split(xstr,"|")
end if
srs.close
set srs=nothing
dim rrs,rsql
set rrs=server.CreateObject("adodb.recordset")
rsql="select MovieID,MovieName,Ssclass,D_Picture from MovieTable where MovieFlag1=0"
if snum<5 then
rsql=rsql&"order by MovieID desc"
else
for j=0 to 3
if j=0 then
rsql=rsql & "and (MovieID="&arr(xrand(j))
else
rsql=rsql & "or MovieID="&arr(xrand(j))
end if
next
rsql=rsql & ") order by MovieID desc"
end if
rrs.open rsql,conn,1,1
do while not rrs.eof
%>
<li style="float:left; width:110px"><table width="90%" height="126" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="103" align="center"><a href="film.asp?id=<%=rrs("MovieID")%>"><img name="" src="<%=rrs("D_picture")%>" width="87" height="94" alt="<%=rrs("ssclass")%>片:<%=rrs("MovieName")%>"></a></td>
</tr>
<tr>
<td align="center"><a style=" color:#333333" href="film.asp?id=<%=rrs("MovieID")%>"><%=left(rrs("MovieName"),7)%></a></td>
</tr>
</table>
</li>
<%
rrs.movenext
loop
rrs.close
set rrs=nothing
%>