R roady Medlem sedan jan. 2002 473 inlägg Trådstart 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 ?
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
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?