R roady Medlem sedan jan. 2002 473 inlägg Frågan 11 feb. 2003 00:21 #1 jag har kollat runt på en massa slumpningar, men mitt problem är att folk kan lägga till och ta bort posterna i databasen, därför blir det "hål" i räknaren i databasen.
typ:
1
2
5
6
7
10
13
14
osv....
hur fixar man en slumpning som funkar på det ? :q
behöver bara ha ut ett värde!
crisse6 Medlem sedan dec. 2000 2 526 inlägg vad menar du? Den slumpar ju bara fran dom som finns.... vanta ska ge dig exempel pa slumpning fran db... ;)
crisse6 Medlem sedan dec. 2000 2 526 inlägg kolla denna sida... mycket bra kod av LarsG, slumpar iofs 5, men latt att andra, skriv om du far problem ;)
http://www.webforum.nu/showthread.php?s=&postid=86465#post86465
M Macce Medlem sedan apr. 2001 425 inlägg Varför slumpa ? Det är väl bättre att du bygger en loop
som går igenom en getrows-array och väljer det lägsta lediga
id:t och gör en insert där.
Av vilken anledning vill du få bort "hålen" i db:n ?
mvh
P PatrikB Medlem sedan mars 2000 2 836 inlägg detta är ett annat sätt:
<%
Option Explicit
Dim strSQLrnd
Dim rstRand
Dim intTotalRecs
Dim intRndPost
Dim strSlumpPost
'## -- nytt frö för slumpning --
Randomize
'## -- sql-fråga att slumpa från --
strSQLrnd = "SELECT * FROM tbl_table"
'## -- skapa recordset som ska hålla posterna att slumpa från --
Set rstRand = Server.CreateObject("ADODB.Recordset")
With rstRand
.Source = strSQLrnd
.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/my_db.mdb")
.CursorLocation = 3
.CursorType = 1
.LockType = 3
.Open
.ActiveConnection = Nothing
If Not .EOF Then
intTotalRecs = .RecordCount
intRndPost = CInt(rnd*(intTotalRecs - 1))
'## -- förflytta recordset markören till slumpat värde --
.Move intRndPost
'## -- spara det slumpade värdet till variabel --
strSlumpPost = .Fields(0).Value
Else
'## -- inga poster fanns --
End if
'## -- stäng recordsetet --
.Close
End With
'## -- clean up minnet --
Set rstRand = Nothing
%>
<html>
<head>
<title>Slumpa från DB</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<%
Response.Write "Antal poster: " & intTotalRecs & _
"<br>Slumpvärde: " & intRndPost & _
"<br>Slumpat ID: " & strSlumpPost
%>
</body>
</html>
ändra sövägen till databasen och sql-frågan så att det stämmer för din db
cya,
PatrikB
R roady Medlem sedan jan. 2002 473 inlägg jag har inte riktigt greppat detdär med slumpningen, när jag själv gjort så får jag en massa ID:s som inte finns. Det var därför jag talade om dessa "hål", inget som jag ville ta bort utan de finns ju bara där ;)
Men nu funkar det kanon ju! Får bara nummer som existerar i databasen.
tack för den eminenta hjälpen :bire
D danis Medlem sedan aug. 2002 157 inlägg det är bättre att slumpa direkt från databasen. mkt enklare
@nders Medlem sedan juni 2000 32 967 inlägg Om det är enklare att slumpa direkt från databasen skulle det uppskattas med kodexempel. I MySQL kan man enkelt göra det, men i andra dbms?