webForumDet fria alternativet

slumpa fram 5 olika bilder

ASP

42 svar · 1 099 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Har sökt bland tidigare inlägg men har inte hittat något som visar hur man kan göra detta.

SQL = "Select * from members where bild = 'bild_yes' "

dessa krav vill jag uppfylla. Bilderna finns i en mapp som heter krypinbild och där heter bilderna bildid .jpg

Där id är ett nummer på den medlemmen som jag hämtar från SQL-satsen härovan.

Hur ska man nu göra för att slumpa fram 5 olika bilder varje gång sidan laddas?

Medlem sedan sep. 2001269 inlägg
#2

<% 
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=db.mdb"

SQL = "Select * from members where bild = 'bild_yes'"
RStemp = UBOUND(oConn.Execute(SQL).GetRows(),2)+1 

Randomize
Set RS = oConn.Execute(SQL)
Ror i = 1 to 5
     post = Int(RND*RStemp)
     For s = 1 to post
     RS.MoveNext
     Next
     Response.write "<img src='krypinbild/bild"&RS("id")&".jpg'>"
Next

Rs.Close
Set Rs = Nothing %>

Chansar jag på. Inte helt säker på Randomize där.

Medlem sedan feb. 20011 498 inlägg
#3

Jag får Slut på programsats förväntas på denna rad:

Ror i = 1 to 5

Medlem sedan feb. 2001256 inlägg
#4

Det skall nog stå

For i = 1 to 5

istället för

Ror i = 1 to 5

Medlem sedan feb. 20011 498 inlägg
#5

Japp, du hade rätt, borde jag har sett själv. Men nu får jag

Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.

på raden

RS.MoveNext

Medlem sedan dec. 200012 464 inlägg
#6
<% 
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=db.mdb"

SQL = "Select id from members where bild = 'bild_yes'"

Randomize
Set RS = oConn.Execute(SQL)
if  not rs.eof then
    bilder = rs.getrows()
    antalBilder = ubound(bilder,2) + 1
    For i = 1 to 5
        post = Int(RND*antalBilder)
        Response.write "<img src='krypinbild/bild"&bilder(post,0)&".jpg'>"
Next
end if
Rs.Close
Set Rs = Nothing
Medlem sedan feb. 20011 498 inlägg
#7

Nu får jag detta felmeddelande:

Felaktigt matrisindex: '3'

då trean kan vara mellan 1-5 för jag uppdaterade sidan och då blev det olika hela tiden.

Detta får jag på rad:

Response.write "<img src='krypinbild/bild"&bilder(post,0)&".jpg'>"

Medlem sedan sep. 2001269 inlägg
#8

Finns det nåt på platsen med indexet 3 då?
Hur många poster har du?

Medlem sedan feb. 20011 498 inlägg
#9

Det finns minst 5 poster.

Medlem sedan dec. 200012 464 inlägg
#10

Är det jag som blandar ihop matrisindex som vanligt?

Response.write "<img src='krypinbild/bild"&bilder(0,post)&".jpg'>"
Medlem sedan feb. 20011 498 inlägg
#11

Märkte precis att jag även kan få detta felmeddelande:

Felaktigt matrisindex: '6'

Alltså över 5.

Medlem sedan feb. 20011 498 inlägg
#12

Nu funkar scriptet och ser alltså ut så här:

<% 
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("community.mdb")

SQL = "Select id from members where bild = 'bild_yes'"

Randomize
Set RS = oConn.Execute(SQL)
if  not rs.eof then
    bilder = rs.getrows()
    antalBilder = ubound(bilder,2) + 1
    For i = 1 to 5
        post = Int(RND*antalBilder)
	Response.write "<img src='krypinbild/bild"&bilder(0,post)&".jpg'>"
    
Next
end if
Rs.Close
Set Rs = Nothing

%>

Men när den slumpar så kan samma bild komma två ggr och det vill inte jag utan alla 5 ska vara olika.
Hur fixar man det?

Medlem sedan dec. 200012 464 inlägg
#13
<% 
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("community.mdb")

SQL = "Select id from members where bild = 'bild_yes'"

Randomize
Set RS = oConn.Execute(SQL)
if  not rs.eof then
    bilder = rs.getrows()
    antalBilder = ubound(bilder,2) + 1
    For i = 0 to 4
          if i = antalBilder then exit for
        post = Int(RND*(antalBilder - i))
	Response.write "<img src='krypinbild/bild"&bilder(0,post)&".jpg'>"
                bilder(0,post) = bilder(0,antabilder-i)
Next
end if
Rs.Close
Set Rs = Nothing

%>
Medlem sedan feb. 20011 498 inlägg
#14

Nu får jag:

Felaktigt matrisindex: '[number: -1]'

på raden som är fetare:

<% 
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("community.mdb")

SQL = "Select id from members where bild = 'bild_yes'"

Randomize
Set RS = oConn.Execute(SQL)
if  not rs.eof then
    bilder = rs.getrows()
    antalBilder = ubound(bilder,2) + 1
    For i = 0 to 4
          if i = antalBilder then exit for
        post = Int(RND*(antalBilder - i))
	Response.write "<img src='krypinbild/bild"&bilder(0,post)&".jpg'>"
                [b]bilder(0,post) = bilder(0,antabilder-i)[/b]
Next
end if
Rs.Close
Set Rs = Nothing

%>
Medlem sedan dec. 200012 464 inlägg
#15

En felstavning

bilder(0,post) = bilder(0,antalbilder-i)

Om du har option explicit överst på sidan och dimmar alla variabler så upptäcker du sådana fel enklare

Medlem sedan feb. 20011 498 inlägg
#16

Nu får jag detta felmeddelande:

Felaktigt matrisindex: '[number: 7]'

på samma rad.

Får även det felmeddelande om jag ändrar antalbilder till antalBilder på den raden.

Jag testade antalBilder för att det är med stort B på de andra ställerna.

Medlem sedan dec. 200012 464 inlägg
#17

så här borde det bli

bilder(0,post) = bilder(0,antalbilder-i-1)
Medlem sedan feb. 20011 498 inlägg
#18

Tack så mycket :birp

Nu fungerar det!

Medlem sedan mars 2000542 inlägg
#19

Testade och fick det inte till att funka, två bilder visades men inte de resterande 3, och hur gör jag om jag vill slumpa ut 7 bilder

Microsoft VBScript runtime error '800a0009'

Subscript out of range: '[number: -1]'

/index4.asp, line 16

<html>
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=databas.mdb" 

SQL = "SELECT picURL FROM Gallery"

Randomize
Set RS = Connect.Execute(SQL)
if  not rs.eof then
    bilder = rs.getrows()
    antalBilder = ubound(bilder,2) + 1
    For i = 0 to 4
          if i = antalBilder then exit for
        post = Int(RND*(antalBilder - i))
	Response.write "<img src='images/thumb/"&bilder(0,post)&"'>"
                bilder(0,post) = bilder(0,antabilder-i)
Next
end if
Rs.Close
Set Rs = Nothing
%>
Medlem sedan dec. 200012 464 inlägg
#20

Du använder olika namn för din array.

thumbURL och bthumbURL

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)