webForumDet fria alternativet

Slumpa post ur databasen

5 svar · 220 visningar · startad av nanne

nanneMedlem sedan dec. 19991 749 inlägg
#1

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

------------------
Daniel Olsson - Webbutvecklare

Personlig sida
KjAM Sekten Community

/N

bohlinMedlem 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.

------------------
/bohlin

nanneMedlem 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äää.

------------------
Daniel Olsson - Vävkonsult

Personlig sida
KjAM Sekten Community

/N

VideMedlem 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...

------------------
MVH / Vide
Min hemsida:webeye.nu

[Redigerat av Vide den 03 apr 2000]

erik_nordellMedlem 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

LarsGMedlem 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.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 18 mar 2001]

[Redigerat av LarsG den 05 sep 2001]

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)