webForumDet fria alternativet

Slumpa

9 svar · 385 visningar · startad av Qimen

QimenMedlem sedan juni 20015 009 inlägg
#1

Hej

Jag har tio värden i en databas i tabellen bungyjump. Varje värde har en titel (stot), ett värde som ska dras av (energi), en förklaring till varje värde (resultat), ett fält med ett värde som ska plussas (pixlar) och slutligen ett fält som har ett värde som ska dras av (IQ).
Jag har även en tabell som heter anvandare.

Hur gör jag en if sats som om querystringen är action=1 så ska det slumpas fram en av de tio posterna, id 1-10 i db:n, när den gjort det ska värdet i energi (tabell anvandare) minskas med värdet i energi (tabell bungyjump). likadant med fältet iq i bungyjump mot iq i anvandare och sen samma sak men då ska värdet pixlar (i anvandare) plussas med värdet i pixlar från bungyjump och så även med respekt i bungyjump mot respekt i anvandare

Går det att slumpa på detta sättet med endast id 1 till 10 i bungyjump? och om det går ställa in så att id 1 slumpas med en chans på 25%

Går detta att genomföra? :)

Har sökt i forumet efter slumpa och random, dock utan att hitta något att använda

QimenMedlem sedan juni 20015 009 inlägg
#2

okej, jag tror jag kommit så långt att jag nu bara behöver hämta själv posten ifrån databasen. Men hur gör jag så att den slumpar fram en?
detta funka:

wow= "SELECT * FROM bungyjump order by rnd"

Går det att slumpa på ngt sådant sätt?

SebbeMedlem sedan jan. 20032 285 inlägg
#3

Det här använder jag för att slumpa fram en post:

Set objConn = Server.CreateObject("ADODB.Connection")
' Öppna databas
strSQL = "SELECT COUNT(*) AS stycken FROM bungyjump"
Set objRS = objConn.Execute(strSQL)
intSt = objRS("stycken")

intSlump = Int(Rnd * intSt) + 1
Set objRS2 = objConn.Execute("SELECT * FROM bungyjump WHERE id = " & intSlump)
Response.Write(objRS2("id"))
Set objRS2 = Nothing

Set objRS = Nothing
objConn.Close
Set objConn = Nothing
JosefMedlem sedan mars 20023 561 inlägg
#4

Sebbe: Varför har du variablerna strDone & i med? Den används ju inte. :q

QimenMedlem sedan juni 20015 009 inlägg
#5

Jag försökte med:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("../.../members.mdb")
Set sak = Server.CreateObject("ADODB.Recordset")
Randomize
blanda = cInt(rnd()*4)+1
Addera = "SELECT * FROM bungyjump WHERE ID="& blanda
sak.Open Addera, Connect, 3, 3

Och det funkar som det ska, nästan.
Ibland så får man:

mugabeIE skrev:

Undantag inträffade.

hmmm :q

SebbeMedlem sedan jan. 20032 285 inlägg
#6

Josef skrev:

Sebbe: Varför har du variablerna strDone & i med? Den används ju inte. :q

Oj... Jag har tidigare använt den där koden för att slumpa fram fler än en med. Det är därför de är med, glömde att ta bort dem. :) *Redigerar koden*

SebbeMedlem sedan jan. 20032 285 inlägg
#7

Qimen skrev:

Jag försökte med:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("../neta20038708073518/members.mdb")
Set sak = Server.CreateObject("ADODB.Recordset")
Randomize
blanda = cInt(rnd()*4)+1
Addera = "SELECT * FROM bungyjump WHERE ID="& blanda
sak.Open Addera, Connect, 3, 3

Och det funkar som det ska, nästan.
Ibland så får man:

mugabeIE skrev:

Undantag inträffade.

hmmm :q

Är du säker på att det finns 4 st poster i din databas? Det är därför det är säkrast att köra med COUNT(*).

QimenMedlem sedan juni 20015 009 inlägg
#8

Ser ut som fyra poster iaf :e
http://qimen.mine.nu/db.gif

SebbeMedlem sedan jan. 20032 285 inlägg
#9

Ah, jag tror jag vet vad som är fel. Byt ut

blanda = cInt(rnd()*4)+1

mot

blanda = Int(rnd()*4)+1
QimenMedlem sedan juni 20015 009 inlägg
#10

yeah! Tack så mycket Sebbe :bire
Funkar fin fint nu.

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