Slumpa post ur databasen

ASP

5 svar · 239 visningar · startad av nanne

Medlem sedan dec. 19991 749 inlägg
Trådstart#1

Hur gör man det enklast? Jag kollade lite i manualen men hittade inget att gå på. Tips fås gärna

Medlem sedan mars 2000263 inlägg
#2

man kan ju alltid kolla hur många poster det finns, sen randomizer med det talet som max, och sen loop:a rs.movenext så många gånger som slumptalet blev.

Medlem sedan dec. 19991 749 inlägg
#3

För att citera en TV serie (kommer inte ihåg vilken) "Man kan göra så. Men det är inte rätt" Det känns iaf inte rätt. Luktar fel liksom att man måste loopa sig fram till rätt post. Näää.

Medlem sedan dec. 19998 577 inlägg
#4

Här är en kodsnutt som jag har gjort för att slumpa fram en länk ur min databas:

<%
SQL = "select count(*) AS count_lankar from lankar"
Set RS_count_lankar = databas.Execute(SQL)
					
Randomize
vilkenlank = Int(rnd*RS_count_lankar("count_lankar"))-1

SQL = "Select * from lankar"
	
Set RSdbase = Server.CreateObject("ADODB.Recordset")
RSdbase.open SQL, Session("dbasepath")
RSdbase.Move vilkenlank
url = RSdbase("lank")
lank_namn = RSdbase("namn")
lank_beskriv = RSdbase("beskrivning")
%>

... Alltså kollar jag först hur många länkar som finns... slumpar fram ett tal utifrån det... sen öppnar jag tabellen i ett recordset och hämtar posten som slumptalet tog fram...

Medlem sedan aug. 2000431 inlägg
#5

Hur gör jag för att slumpa fram flera "länkar" som i detta fall?
Typ om jag vill ha 6 slumvalda rader från databasen, hur? :p

Medlem sedan dec. 200012 464 inlägg
#6

Lite loopar och så


<%
Dim links()
Dim counter,i,found
SQL = "select count(*) AS count_lankar from lankar"
Set RS_count_lankar = databas.Execute(SQL)

Randomize
  counter = 0
  do
     link = Int(rnd*RS_count_lankar("count_lankar"))-1
     found = 0
     for i = 0 to counter - 1
         if  links(i) = link then
             found = 1
             exit for
         end if
     next
     if found = 0 then
        links(counter) = link
        counter = counter -- 1
     end if
     if  counter = 6 then
         exit do
     end if
  loop

SQL = "Select * from lankar"

Set RSdbase = Server.CreateObject("ADODB.Recordset")
RSdbase.open SQL, Session("dbasepath"),adLockPessimistic,adOpenKeyset
for i = 0 to 5 
    RSdbase.Move links(i)
    url = RSdbase("lank")
    lank_namn = RSdbase("namn")
    lank_beskriv = RSdbase("beskrivning")
'gör något med länk
next
%>

Det är inte testat på något vis men du kan väl hämta någon ide i alla fall.

374 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
119 ms — deklarationer (db)
120 ms — hämta statistik (db)
130 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)