Jag skulle skapat en function av det hela, och sedan anropa den fem gånger...
Sedan skulle jag kolla så att det inte förekommer två likadana profiler...
19 svar · 346 visningar · startad av crisse6
jag har denna kod som slupar ut en person som är medlem. Jag vill ha den så att den slumpar fram typ 5 st på rad samtidigt så att man lägger dom på rad... som lunarstorm har ungefär....
hej!
Jag skulle skapat en function av det hela, och sedan anropa den fem gånger...
Sedan skulle jag kolla så att det inte förekommer två likadana profiler...
okej.... ingen som vill visa ett litet exempel...?
Något att utgå ifrån
http://cgi.webforum.nu/wf/Forum11/HTML/000282.html
okej, har kollat och tog din lilla kod LarsG, men hur och vad ska man ändra i denna kod för att få den skriva ut te x 6 st som i exemplet? (jag vill ha denna info utskriven; namn, efternamn osv... )
(pssst... vill passa på att gratta en av dom grymaste webnissarna jag vet "Emission!", grattis!)
Här är en annan variant, som bygger på att tar in ett helt recordset lokalt (släpper kopplingen till databasen), lägger ett slumpvärde i en kolumn, och sorterar på den kolumnen.
set rs=server.createobject("ADODB.Recordset")
rs.cursorlocation=3
rs.locktype=4
rs.open "SELECT Username,UserID FROM Users",conn
set rs.activeconnection=nothing
conn.Close
do until rs.eof
randomize
rs(1)=rnd*1000 ' eller nåt
rs.movenext
loop
rs.sort="UserID DESC"
rs.movefirst
'loopa ut max 5
do until rs.eof or rs.absoluteposition=5
' gör vad du vill med denna
rs.movenext
loop
tackar! men det blir fel.... vad?
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Hämta en länk slumpartat ifrån databasen *****
set rs=server.createobject("ADODB.Recordset")
rs.cursorlocation=3
rs.locktype=4
rs.open "SELECT Username,ID FROM Users",conn
set rs.activeconnection=nothing
conn.Close
do until rs.eof
randomize
rs(1)=rnd*1000 ' eller nåt
rs.movenext
loop
rs.sort="ID DESC"
rs.movefirst
'loopa ut max 5
do until rs.eof or rs.absoluteposition=5
' gör vad du vill med denna
rs.movenext
loop
%>
Du öppnar en connectionobjekt som heter databas, men senare i koden så använder du conn.
fel ändå... här är hela koden:
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Hämta en länk slumpartat ifrån databasen *****
set rs=server.createobject("ADODB.Recordset")
rs.cursorlocation=3
rs.locktype=4
rs.open "SELECT Username,ID FROM Users",databas
set rs.activeconnection=nothing
databas.Close
do until rs.eof
randomize
rs(1)=int(rnd*1000) ' eller nåt
rs.movenext
loop
rs.sort="ID DESC"
rs.movefirst
'loopa ut max 5
do until rs.eof or rs.absoluteposition=5
' gör vad du vill med denna
rs.movenext
loop
%>
Vilken felkod och feltext får du och på vilken rad inträffar felet?
Eller får du bara inte ut något på sidan? Som det är nu så har du ju ingen utskrift av data.
okej... det är på raden
rs(1)=int(rnd*1000) ' eller nåt
får detta felmedd:
Microsoft Cursor Engine error '80040e21'
Fel uppstod.
/groda/hehe.asp, line 15
Gjorde en sökning på ditt felnummer hos microsoft. Det fanns en felrapport som nästan stämmer in på beteendet i din kod
http://support.microsoft.com/support/kb/articles/Q247/0/29.ASP?LN=EN-US&SD=gn&FR=0&qry=80040e21&rnk=20&src=DHCS_MSPSS_gn_SRCH&SPR=MSALL
Där står också att felet är rättat i senare versioner av MDAC så om du inte har senaste så kanske det är dags att ladda hem den.
vad ska jag ha....? har win98 och pws 4.0 hjälp!
jag undrar, varför ska jag uppgradera för ett skript som har fungerat när man endast tog fram 1 st slumpning... ? så mkt skillnad är det väl inte? kolla igenom min kod igen, det borde ju finnas fel....eller?
Nja, just det som jag hänvisade till berodde ju på ett fel i ADO. Så om det är det som ställer till det så räcker det inte med någon ändring i din kod.
Du kan ju testa lite olika varianter, t.ex. att ange olika locktype eller ha default (dvs utelämna tilldelningen helt). Du kan ju också testa att använda ett extra fält för sorteringen
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Hämta en länk slumpartat ifrån databasen *****
set rs=server.createobject("ADODB.Recordset")
rs.cursorlocation=3
'rs.locktype=4
rs.open "SELECT Username,ID,1 as EXT FROM Users",databas
set rs.activeconnection=nothing
databas.Close
do until rs.eof
randomize
rs(2)=int(rnd*1000) ' eller nåt
rs.movenext
loop
rs.sort="EXT DESC"
rs.movefirst
'loopa ut max 5
do until rs.eof or rs.absoluteposition=5
' gör vad du vill med denna
rs.movenext
loop
%>
Ett annat alternativ är ju att skriva om det helt ungefär som jag skissade i den andra tråden.
"varför ska jag uppgradera för ett skript som har fungerat när man endast tog fram 1 st slumpning... ? så mkt skillnad är det väl inte?"
Jo, det är mycket stor skillnad på hur dessa skript fungerar.
LarsG >> fick detta med din "nya" kod:
ADODB.Field error '800a0cb3'
Åtgärden som programmet begärt stöds inte av leverantören.
/groda/hehe.asp, line 14
line 14:
[b]rs(2)=int(rnd*1000) ' eller nåt[/b]
Emission >> finns det INGET annat sätt att lösa "5 slumpning" på?
Fråga 2: Vad är det jag ska uppdatera för att få mitt problem löst? Jag kan inte sånna grejer som du LarsG snackade om