Slumpa med fso
25 svar · 841 visningar · startad av Asa · sida 2 av 2
Frågan, av Asa
Vill slumpa fram en bild som finns i en speciell mapp varje gång sidan laddas. Nån som vet?!?
Läs frågan i sin helhet →Palle skrev:
rndNumber = Int(Rnd * UBound(arr))
se där ja,
int va det ja ...... kanske man skulle börja att använda.
Själv använder man ju mest CInt().
/PatrikB
Jäklar, ni har ju haft ett verbalt slagsmål....
Hur som helst har jag modifierat era förslag.
<%
'Slumpar fram och presenterar en bild.
Set GetPictures = Server.CreateObject("ADODB.Recordset")
PictureSQL = "SELECT FILPATH "
PictureSQL = PictureSQL & "FROM SK_BILDBANK "
PictureSQL = PictureSQL & "WHERE ENTCODE = 'SKHB' "
PictureSQL = PictureSQL & "AND AKTIV = 1 "
PictureSQL = PictureSQL & "ORDER BY FILNAMN "
GetPictures.Open PictureSQL, Connect
If GetPictures.EOF AND GetPictures.BOF then
Response.Write "Välkomstbild"
Else
Do Until GetPictures.EOF
strImage = strImage & GetPictures("FILPATH") &";"
GetPictures.MoveNext
Loop
strImage = Left(strImage, Len(strImage) - 0)
arrImages = Split(strImage, ";")
End If
If IsArray(arrImages) Then
randomize
rndNumber = Int(Rnd * UBound(arrImages))
Response.Write "<img src=""images/bildbank/"& arrImages(rndNumber) &""" border=""0"" width=""314"" height=""145"">"
Var_ImagePath = arrImages(rndNumber)
End If
GetPictures.Close
Set GetPictures = Nothing
'Uppdaterar antalet gånger bilden är visad
SQL ="UPDATE SK_BILDBANK SET BILDVISAD = BILDVISAD + 1 WHERE FILPATH = '" & Var_ImagePath & "' "
Connect.execute(SQL),,128
%>
Som ni kanske ser så hämtar jag inte filnamnen via FSO utan rakt från en databas.
Funkar som en klocka.
Nåväl, nån kanske har användning för den.
// Switch
Vad händer när man har ett semikolon i bildnamnet?
Varför inte köra med ett tecken som inte får finnas i filnamn? Som t.ex. |...
Eller ännu bättre, skippa strängkonkateneringen och bygg ihop en array direkt i loopen. Mer prestandasnålt och snyggare kod.
Sen att lämna en tom plats i arrayen ser ju inte särskilt snyggt ut.
Själv använder jag detta script på webbisen.com som jag fick hjälp med här på wF och det funkar toppen
<%
Dim oConn ,strSQL ,bilder ,i, j ,Count ,post ,antalBilder ,Found
Set oConn = server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " & server.MapPath("/din databas.mdb") & ";"
strSQL = "SELECT picture, username, visaBild" & vbCrLf & _
"FROM tblUsers" & vbCrLf & _
"WHERE not picture='nopic.jpg' and visaBild=true"
Set rs = oConn.Execute(strSQL)
If rs.EOF Then
Response.Write "Det finns inga bilder..."
Else
Response.Write "<table width=""95%""><tr><td align=""left"">"
bilder = rs.GetRows()
antalBilder = UBound(bilder, 2) + 1
Count = 6
If Count > antalBilder Then
Count = antalBilder
End If
ReDim Shown(Count)
Randomize
For i = 1 To Count
Do
Found = False
post = Int(Rnd * antalBilder)
For j = 1 To i - 1
If Shown(j) = post Then
Found = True
Exit For
End If
Next
Loop While Found
Shown(i) = post
Response.Write "<img border=""1"" height=""100"" width=""100"" src=""/images/users/" & bilder(0, post) & """ alt=""" & bilder(1, post) & """> "
Next
Response.Write "</td></tr></table>"
End If
rs.Close
Set rs = Nothing
%>

