Enklast:
Sql = "Select * from members [b]where not bild = 'ingen.gif'[/b]"
Mvh,
Red: kladdigt, sorry.
21 svar · 312 visningar · startad av jboy_87
Hur gör jag så att det inte bilden inget.gif visas i slumpa funktionen.
så här ser koden ut
Och jag har en tabell som heter Bild2
där e sökvägen till bilderna efter att man laddat upp bilden.
<%
Response.Buffer = True
Function Show()
Randomize
RandNum = Int(Rnd * Ialt) + 1
Record.MoveFirst
For i = 1 to RandNum - 1
Record.MoveNext
next
Response.Write "<a href='whois.asp?checkid=" & Record("id") & "'><img src='" & Record("bild2") & "' alt='" & Record("username") & Record("username") & "' border = '1' width= '65' height= '77'></a>"
end function
Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("Database/members.mdb")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Sql = "Select count(*) as Found from members"
Set Record = Rs.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from members"
Set Record = Rs.Execute(Sql)
%>
Enklast:
Sql = "Select * from members [b]where not bild = 'ingen.gif'[/b]"
Mvh,
Red: kladdigt, sorry.
Tycker Slumpfunktionen verkar lite seg
Här är ett annat sätt som inte tar med inget.gif tror jag:
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open ConString
SQL = "select Count(*) AS klo from tabell WHERE bild2 <>'inget.gif'"
Set RS_klo = databas.execute(SQL)
Randomize
Set rstemp = Server.Createobject("ADODB.Recordset")
SQL = "Select * from tabell WHERE bild2 <> 'inget.gif'"
rstemp.cursorlocation = 3
rstemp.cachesize = 5
rstemp.open SQL, ConString
rstemp.move Int(Rnd*RS_klo("klo"))
Tror det där borde funka. Men det är Vide som ska ha credit för det i så fall
[r] du ska nog lyssna mer på @nders än på mig [/r]
Sql = "Select * from members where not bild = 'Bilder/Medlemmar/ingen.gif'
får felmeddelandet:
ADODB.Recordset (0x800A0BCD)
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.
/main.asp, line 31
Hur ser rad 31 ut? Visa lite kod omkring också.
<%
Response.Buffer = True
Function Show()
Randomize
RandNum = Int(Rnd * Ialt) + 1
Record.MoveFirst
For i = 1 to RandNum - 1
Record.MoveNext <--- rad 30
next
Response.Write "<a href='whois.asp?checkid=" & Record("id") & "'><img src='" & Record("bild") & "' alt='" & Record("username") & Record("username") & "' border = '1' width= '65' height= '77'></a>"
end function
Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("Database/members.mdb")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Sql = "Select count(*) as Found from members"
Set Record = Rs.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
Set Record = Rs.Execute(Sql)
%>
löste det men nu vill jag att det inte slumpas fram samma bild
Vad menar du med samma? Nu visar du bara en bild.
Eller menar du som visats tidigare? I så fall måste du hålla reda på vilka bilder som har visats.
skriver ut så här:
<td><% Response.Write "<center>"
Show() %></td>
<td><% Response.Write "<center>"
Show() %></td>
<td><% Response.Write "<center>"
Show() %></td>
<td><% Response.Write "<center>"
Show() %></td>
4 bilder
<%
Response.Buffer = True
Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("Database/members.mdb")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Sql = "Select count(*) as Found from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
Set Record = Rs.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
record.close
set record = nothing
Set Record = server.createobject("adodb.recordset")
record.cursorlocation = 3
record.open sql,rs
dim bilder(3)
randomize
for i = 0 to 3
found = false
do until true
RandNum = Int(Rnd * Ialt)
for j = 0 to i - 1
if bilder(j) = RandNum then
found = true
exit for
end if
next
if not found or i = 0 then exit do
loop
bilder(i) = RandNum
record.Movefirst
Record.Move randNum
Response.Write "<td><center>"
Response.Write "<a href='whois.asp?checkid=" & Record("id") & "'><img src='" & Record("bild") & "' alt='" & Record("username") & Record("username") & "' border = '1' width= '65' height= '77'></a>"
response.write "</td>"
next
record.close
rs.close
red: du får nog fixa till utskriften och lägga till lite <table> <tr> etc.
va fattar inte
Jag tog bort funktionen show därför att
den inte passade in om du vill se till att man inte skall se samma bild flera gånger. (Dessutom så använde den globala variabler! Sluta med sådant.)
Vad är det som inte fungerar?
asså jag fattar ingenting??
<%
Response.Buffer = True
Function Show()
Randomize
RandNum = Int(Rnd * Ialt) + 1
Record.MoveFirst
For i = 1 to RandNum - 1
Record.MoveNext
next
Response.Write "<a href='whois.asp?checkid=" & Record("id") & "'><img src='" & Record("bild") & "' alt='" & Record("username")& Record("syfte") & "' border = '1' width= '65' height= '77'></a>"
end function
Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("Database/members.mdb")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Sql = "Select count(*) as Found from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
Set Record = Rs.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from members "
Set Record = Rs.Execute(Sql)
%>
så här skriver jag ut den:
\<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse"\>
<tr>
<td><% Response.Write "<center>"
Show() %></td>
<td><% Response.Write "<center>"
Show() %></td>
<td><% Response.Write "<center>"
Show() %></td>
<td><% Response.Write "<center>"
Show() %></td>
</tr>
Nu lade jag till några taggar så att du skall kunna använda det här i stället för det du hade tidigare. Om du vill ha funktionen att man inte visar samma bild flera gånger så passar det inte riktigt in med den struktur du hade tidigare.
<%
Response.Buffer = True
Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("Database/members.mdb")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Sql = "Select count(*) as Found from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
Set Record = Rs.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
record.close
set record = nothing
Set Record = server.createobject("adodb.recordset")
record.cursorlocation = 3
record.open sql,rs
dim bilder(3)
randomize
%>
<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse">
<tr>
<%
for i = 0 to 3
found = false
do until true
RandNum = Int(Rnd * Ialt)
for j = 0 to i - 1
if bilder(j) = RandNum then
found = true
exit for
end if
next
if not found or i = 0 then exit do
loop
bilder(i) = RandNum
record.Movefirst
Record.Move randNum
Response.Write "<td><center>"
Response.Write "<a href='whois.asp?checkid=" & Record("id") & "'><img src='" & Record("bild") & "' alt='" & Record("username") & Record("username") & "' border = '1' width= '65' height= '77'></a>"
response.write "</td>"
next
record.close
rs.close
%>
</tr></table>
<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse">
<tr>
det blir ju samma bild på alla fyra och slumpas ej
Kan du lägga in lite traceutskrifter så att man kan se vad som händer ?
response.write "RandNum = " & randNum & " då i = " & i & "<br>"
record.Movefirst
Record.Move randNum
response.write "record pos= " & record.absolutePosition & " då i = " & i & "<br>"
nu använder jag bara denna kod:
<%
Response.Buffer = True
Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("Database/members.mdb")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Sql = "Select count(*) as Found from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
Set Record = Rs.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
record.close
set record = nothing
Set Record = server.createobject("adodb.recordset")
record.cursorlocation = 3
record.open sql,rs
dim bilder(3)
randomize
%>
<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse">
<tr>
<%
for i = 0 to 3
found = false
do until true
RandNum = Int(Rnd * Ialt)
for j = 0 to i - 1
if bilder(j) = RandNum then
found = true
exit for
end if
next
if not found or i = 0 then exit do
loop
bilder(i) = RandNum
record.Movefirst
Record.Move randNum
Response.Write "<td><center>"
Response.Write "<a href='whois.asp?checkid=" & Record("id") & "'><img src='" & Record("bild") & "' alt='" & Record("username") & Record("username") & "' border = '1' width= '65' height= '77'></a>"
response.write "</td>"
next
record.close
rs.close
%>
</tr></table>
<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse">
<tr>
</table>
Vad blir det för resultat om du lägger till dom response.write som jag skrev i mitt förra inlägg?
Blir fel på Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A0401)
Slut på programsats förväntas.
/test/default2.asp, line 41, column 81
<%
Response.Buffer = True
Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("Database/members.mdb")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Sql = "Select count(*) as Found from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
Set Record = Rs.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from members where not bild = 'Bilder/Medlemmar/ingen.gif'"
record.close
set record = nothing
Set Record = server.createobject("adodb.recordset")
record.cursorlocation = 3
record.open sql,rs
dim bilder(3)
randomize
%>
<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse">
<tr>
<%
for i = 0 to 3
found = false
do until true
RandNum = Int(Rnd * Ialt)
for j = 0 to i - 1
if bilder(j) = RandNum then
found = true
exit for
end if
next
if not found or i = 0 then exit do
loop
bilder(i) = RandNum
record.Movefirst
Record.Move randNum
response.write "RandNum = " & randNum & " då i = " & i & "<br>"
record.Movefirst
Record.Move randNum
response.write "record pos= " & record.absolutePosition & " då i = " & i & "<br>"next
record.close
rs.close
%>
blir så här också
efter att lekt med koden
RandNum = då i = 0
record pos= 1 då i = 0
RandNum = då i = 1
record pos= 1 då i = 1
RandNum = då i = 2
record pos= 1 då i = 2
RandNum = då i = 3
record pos= 1 då i = 3