webForumDet fria alternativet
Logga in / Bli medlem

Slumpa

ASP

9 svar · 386 visningar · startad av Qimen

Medlem sedan juni 20015 009 inlägg
Trådstart#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

Medlem 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?

Medlem 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
Medlem sedan mars 20023 561 inlägg
#4

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

Medlem 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

Medlem 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*

Medlem 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(*).

Medlem sedan juni 20015 009 inlägg
#8

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

Medlem 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
Medlem sedan juni 20015 009 inlägg
#10

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

755 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
494 ms — deklarationer (db)
127 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
494 ms — ändringar (db)