Ett enkelt script skulle vara trevligt. Vilken databas använder du? Använder access, men den använder jag det där slumpas samma post ut hela tiden. JAg testade i AccessXP i vilket det fungerade. Kanske inte går at göra så i tidigare versioner. Hmm.. Samma sak, fast med en ny post! :( Har en som funkar, vet inte om den passar dig. Fältid är ett inkrementellt fält för nyckel. <code> Testa med: fortfarande bara en post som slumpas ut hela tiden.. fungerar det för er när ni testar? Funkar utmärkt för mig. Kan det var så att din sida cachar resultatet? Har du provat att ladda om sidan? Hej NewID() fungerar inte.. Borde inte denna fungera? <code>Slumpa post ur databas
Det jag använder nu ser ut så här:
<code>
SQL = "SELECT MAX(ID) From image"
Set rs = Connection.Execute(SQL)
Randomize
siffra = Int(RND*(rs.Fields(0))) + 1
SQL2 = "SELECT * From image WHERE ID = " & siffra
Set rs2 = Connection.Execute(SQL2)
If rs2.EOF Then
Response.Redirect "default.asp"
End If
</code>
Detta fungerar, men ibland kan en användare ha tagit bort en post ur databasen, vilket gör att ett ID ibland kan saknas. Har löst detta genom att då ladda om sidan tills den hittar en ID som finns. Finns det inget bättre sätt? Ett som bara använder sig av de poster som verkligen finns och sedan slumpar ut en av dessa.Sv: Slumpa post ur databas
Om du använder access kan du skriva:
<code>
SQL = "SELECT TOP 1 image.* FROM image ORDER BY Rnd(image.ID)"
Set rs = Connection.Execute(SQL)
If rs.EOF Then
Response.Write "No records!"
Else
'Din kod...
End If
</code>Sv: Slumpa post ur databas
<code>
SQL = "SELECT TOP 1 image.* FROM image ORDER BY Rnd(image.ID)"
Set rs = Connection.Execute(SQL)
If rs.EOF Then
Response.Write "No records!"
Else
Response.Write "<img src=" & rs("Source") & ">"
End If
</code>Sv: Slumpa post ur databas
Försök med:
<code>
SQL = "SELECT TOP 1 image.* FROM image ORDER BY Rnd() * image.ID / image.ID"
</code>Sv: Slumpa post ur databas
Skulle vara kanon om man fick det här att fungera. Mitt nuvarande script har brister..Sv: Slumpa post ur databas
<code>
select fältid,
(fältid*(1+datepart(s,getdate()))*(1+datepart(ms,getdate())))%1000 as sortid
from tabell
order by sortid
</code>Sv: Slumpa post ur databas
SQL = "SELECT *, (ID*(1+datepart(s,getdate()))*(1+datepart(ms,getdate())))%1000 AS ID FROM image ORDER BY ID"
Set rs = Connection.Execute(SQL)
</code>
??
Hänger nog inte riktigt med tror jag..Sv: Slumpa post ur databas
<code>
SQL = "SELECT TOP 1 image.* FROM image ORDER BY RND(image.ID * TIME())"
</code>Sv: Slumpa post ur databas
Sv: Slumpa post ur databas
Sv: Slumpa post ur databas
Har inte använt Acccess på väldigt länge, men i MS SQL server använder jag newid(). Du kan ju testa i Access om det funkar.
Annars skall det även fungera med rnd eller rand.
SELECT TOP 1 image.* FROM image ORDER BY NewId()Sv: Slumpa post ur databas
Sidan ligger inte cachad, har testat att uppdatera flera gånger. Den tar bara fram samma post hela tiden, förstår inte vad det är som är fel. :(Sv: Slumpa post ur databas
<code>
SQL = "SELECT TOP 4 image.* FROM image ORDER BY Rnd(image.ID)"
Set rs = Connection.Execute(SQL)
</code>
Hajar inte, får samma 4 poster hela tiden. Väldigt irriterande, för jag antar att det är nåt litet småfel bara. Har ju fått en hel del förslag här, men ingenting har fungerat. Hur brukar man oftast bära sig åt för att slumpa en eller flera poster från en Access-databas?Sv: Slumpa post ur databas
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../user_poll.mdb")
SQL = "SELECT Count(*) AS antal FROM image"
Set RecSet = Connect.execute(SQL)
Randomize
Set RecSet3 = Server.Createobject("ADODB.Recordset")
SQL3 = "Select * From image"
RecSet3.cursorlocation = 3
RecSet3.cachesize = 5
RecSet3.open SQL3, Connect
RecSet3.move Int(Rnd*RecSet("antal"))
%>
<%
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
%>
</code>