Hej! Det du kan göra är att skapa ett slumpnummer som ligger i det intervall som du har PIC_ID i din tabell. Sedan loopa igenom din tabell för att hitta ett matchande PIC_ID. När det har hittats kan du visa bilden med detta PIC_ID.Problem med rand()
Har följande kod från en färdig sida se ex på www.plotter.nu/hot/
<code>
<!--#include file="Connections/connDUpics.asp" -->
<%
Dim rsRandPic
Dim rsRandPic_numRows
Dim strSql
If Request.QueryString("iPic") <> "" Then
strSql = "SELECT * FROM PICTURES WHERE PIC_APPROVED = 1 AND PIC_ID > " & Request.QueryString("iPic") & " ORDER BY PIC_ID ASC"
Else
strSql = "SELECT * FROM PICTURES WHERE PIC_APPROVED = 1 ORDER BY PIC_ID ASC"
End If
%>
<%
Set rsRandPic = Server.CreateObject("ADODB.Recordset")
rsRandPic.ActiveConnection = MM_connDUpics_STRING
rsRandPic.Source = strSql
rsRandPic.CursorType = 0
rsRandPic.CursorLocation = 2
rsRandPic.LockType = 1
rsRandPic.Open()
rsRandPic_numRows = 0
%>
<%
If rsRandPic.EOF or rsRandPic.BOF then
Response.Redirect("view.asp")
End If
%>
<%
Dim imgWidth, imgHeight, imgPercent, imgFixWidth, imgFixHeight
imgWidth = rsRandPic.Fields.Item("PIC_WIDTH").Value
imgHeight = rsRandPic.Fields.Item("PIC_HEIGHT").Value
imgFixWidth = 380
imgPercent = (imgFixWidth/imgWidth)
imgFixHeight= (imgHeight*imgPercent)
%>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function OpenImage(img){
foto1= new Image();
foto1.src=(img);
Controlla(img);
}
function Controlla(img){
if((foto1.width!=0)&&(foto1.height!=0)){
viewFoto(img);
}
else{
funzione="Controlla('"+img+"')";
intervallo=setTimeout(funzione,20);
}
}
function viewFoto(img){
largh=foto1.width+20;
altez=foto1.height+20;
stringa="width="+largh+",height="+altez;
finestra=window.open(img,"",stringa);
}
// End -->
</script>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="1" colspan="2" align="center" bgcolor="#FFFFFF"><img src="assets/_spacer.gif" width="1" height="1"></td>
</tr>
<tr>
<td height="16" align="left" valign="middle" bgcolor="#000000" class="textBold"><font color="#FFFFFF"> <%=(rsRandPic.Fields.Item("PIC_NAME").Value)%></font></td>
<td height="16" align="right" bgcolor="#000000" class="textBold"><font color="#FFFFFF">Röster</font><font color="#FFFFFF">:
<%=(rsRandPic.Fields.Item("PIC_VOTE_COUNT").Value)%> </font></td>
</tr>
<tr>
<td height="1" colspan="2" align="center" bgcolor="#FFFFFF"><img src="assets/_spacer.gif" width="1" height="1"></td>
</tr>
<tr>
<form name="VOTE" method="post" action="voting.asp">
<td colspan="2" align="center" valign="middle" bgcolor="#FF0000"> <table width="100%" border="0" cellpadding="0" cellspacing="0" background="assets/rate_bar.gif">
<tr align="center" valign="middle">
<input type="hidden" name="PIC_VOTE_VALUE" value="<%=(rsRandPic.Fields.Item("PIC_VOTE_VALUE").Value)%>">
<input type="hidden" name="iPic" value="<%=(rsRandPic.Fields.Item("PIC_ID").Value)%>">
<input type="hidden" name="PIC_VOTE_COUNT" value="<%=(rsRandPic.Fields.Item("PIC_VOTE_COUNT").Value)%>">
<td><b><font color="#FFFFFF">1</font></b></td>
<td><b><font color="#FFFFFF">2</font></b></td>
<td><b><font color="#FFFFFF">3</font></b></td>
<td><b><font color="#FFFFFF">4</font></b></td>
<td><b><font color="#FFFFFF">5</font></b></td>
<td><b><font color="#FFFFFF">6</font></b></td>
<td><b><font color="#FFFFFF">7</font></b></td>
<td><b><font color="#FFFFFF">8</font></b></td>
<td><b><font color="#FFFFFF">9</font></b></td>
<td><b><font color="#FFFFFF">10</font></b></td>
</tr>
<tr align="center" valign="middle">
<td> <input type="radio" name="voteValue" value="1" onclick="this.form.submit()">
</td>
<td> <input type="radio" name="voteValue" value="2" onclick="this.form.submit()">
</td>
<td> <input type="radio" name="voteValue" value="3" onclick="this.form.submit()">
</td>
<td> <input type="radio" name="voteValue" value="4" onclick="this.form.submit()">
</td>
<td> <input name="voteValue" type="radio" onclick="this.form.submit()" value="5" checked>
</td>
<td> <input type="radio" name="voteValue" value="6" onclick="this.form.submit()">
</td>
<td> <input type="radio" name="voteValue" value="7" onclick="this.form.submit()">
</td>
<td> <input type="radio" name="voteValue" value="8" onclick="this.form.submit()">
</td>
<td> <input type="radio" name="voteValue" value="9" onclick="this.form.submit()">
</td>
<td> <input type="radio" name="voteValue" value="10" onclick="this.form.submit()">
</td>
</tr>
</table></td>
</form>
</tr>
<tr>
<td height="1" colspan="2" align="center" bgcolor="#FFFFFF"><img src="assets/_spacer.gif" width="1" height="1"></td>
</tr>
<tr>
<td colspan="2" align="center">
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
<tr>
<td align="center" valign="middle" bgcolor="#CCCCCC">')" BORDER="0">" width = "<%= imgFixWidth %>" height = "<%= imgFixHeight %>" alt = "Download <%=(rsRandPic.Fields.Item("PIC_NAME").Value)%> (<%=(rsRandPic.Fields.Item("PIC_WIDTH").Value)%>Wx<%=(rsRandPic.Fields.Item("PIC_HEIGHT").Value)%>H)" border="0" align="absmiddle"></td>
</tr>
</table>
</td>
</tr>
</table>
<%
rsRandPic.Close()
%>
</code>
Här laddas bild med lägsta Id och sen nästa osv.
När Id är slut så går vi vidare till view.asp
Hur skall man skriva kodning (bör väl vara i strSql??) så att det kommer en random istället (tråkigt med samma bild hela tiden som första osv...) och sen så att det loopas istället för att gå till view.asp (här kan man ifs ladda sidan igen..)
tacksam för lite förslag då jag testat mig fram och kört fast totalt.
mvh TyroneSv: Problem med rand()
Något liknande detta:<code><%
imgExists=False
'Ta ut högsta ID från pictures-tabellen
SET MAX=conn.execute("SELECT MAX(PIC_ID) as img FROM pictures WHERE pic_approved = 1")
' Loopa till dess en bild har hittats
DO UNTIL imgExists
'Slumpa fram ett ID mellan 1 och det högsta ID:et i tabellen
Randomize
slump=Int(MAX("img")*Rnd+1)
'Läs in data från pictures-tabellen
SET myImg=conn.execute("SELECT * FROM pictures WHERE pic_approved = 1")
'Stega igenom inlästa bilder
DO UNTIL myImg.EOF
'om PIC_ID är samma som slumpnummer
IF slump=myImg("PIC_ID") THEN
'Här lägger du koden för att visa din bild
imgExists=True 'Markera att bild har hittats (och visats)
Exit Do 'Avbryt inre Do-loopen... den yttre avbryts när usrExists=True
END IF
myImg.MoveNext
Loop
Loop
%></code>
Om du inte vill ha koden för att visa bilden inne i denna loop kan du ju använda värdet i variabeln slump för att plocka ut en bild.