Avatar billede crapman Nybegynder
15. august 2003 - 15:31 Der er 13 kommentarer og
1 løsning

Random tal som IKKE er i database

Hey folk,
Jeg sidder og skal lave et system, som vælger et tal mellem 1 og 90 som IKKE allerede er trukket... tallet gemmes i en database, så den skal altså undersøge om tallet eksisterer i databasen... hvis ikke, ja så er tallet gyldig...... Men HVORDAN???

Mange point da jeg skal bruge det ASAP!
Avatar billede nmh Nybegynder
15. august 2003 - 15:36 #1
Når du siger tal mellem 1 og 90, mener du så heltal?
altså 1, 2, 3,...,90
Avatar billede nmh Nybegynder
15. august 2003 - 15:37 #2
Hvis det er tilfældet så ville jeg ikke gemme i en database, men blot i en tekstfil med 1 linie.
Hver gang der blve trukket et tal, blev det tilføjet til linien,og linien blev gemt.'Hvad skal der ske, når alle 90 tal er udtrukket?
Avatar billede nmh Nybegynder
15. august 2003 - 15:51 #3
Programmet kunne se nogenlunde således ud (jeg skriver ikke koden til hent en linie, da jeg ikke kanhusek den lige her. Hvis du er interesseret kan jeg skrive den iaften):

<%Option Explicit
dim udtrukne, tmp, gentag, tal
udtrukne=hent linie.....
tmp="," & udtrukne & ","
gentag=true
Randomize
while gentag
  tal=round(Rnd*100)
  if tal <>100
    gentag=(Instr(udtrukne,"," & tal & ",")>0) 
  end if
wend
udtrukne=udtrukne & "," & tal
gem udtrukne....
%>
<html>
<body>
<%response.write(tal)%>
</body>
</html>
Avatar billede nmh Nybegynder
15. august 2003 - 15:53 #4
Det skulle have været et svar.
Avatar billede crapman Nybegynder
15. august 2003 - 15:54 #5
Det er ret vigtigt at det bliver gemt i en database, da resten af systemet allerede er baseret på det.... og ja, det er heltal...

Der skal ikke ske noget når der er trukket 90 tal... det vil aldrig ske...

Det er til et banko-system til et diskotek... Det viser tallene på storskærm... og sletter alle tal i databasen når der trykkes på en "start nyt spil" knap.....
Avatar billede hossein Nybegynder
15. august 2003 - 16:01 #6
på den måde kan du ha unikke "Random nummer" mellem 1 og 90, du kan selv bestemme hvor mange tal hver gang skal vises, du kan forbinde det til din DB:

<%
Maks_nummer = 90
tot_unikke = 1 'antal tal som skal vises
dim random_nummer, counter, check, unikke_nummers
redim random_nummer(tot_unikke)
randomize
For counter = 1 to tot_unikke
random_nummer(counter) = Int(Rnd * Maks_nummer)+1
for check=1 to counter-1
if random_nummer(check)= random_nummer(counter) then
counter=counter-1
end if
next
next
%>
<p>
<%
For counter = 1 to tot_unikke
response.write "<li>" & random_nummer(counter) & "</li>"
next
%>
Avatar billede nmh Nybegynder
15. august 2003 - 16:04 #7
Ok. Men ville det så være OK, hvis databasen blot havde et felt, hvor linien med de udtrukne tal var gemt?
Det skulle altså blot være et tekstfelt, der kan rumme en streng af længde 300.
Så vil ovennævnte lille programstump fungere.
udtrukne=hentlinie.. og gem udtrukne er så blot at hente og gemme denne tekststreng i databasen.
Avatar billede crapman Nybegynder
15. august 2003 - 16:10 #8
nej, hvert tal skal have sin egen post..... Db strukturen er sådan;

id | tal | timestamp | spil
Avatar billede nmh Nybegynder
15. august 2003 - 16:12 #9
Er det af hensyn til at kunne dokumentere, at alt går rigtigt til, at det skal gemmes i en database.
Du kunne jo også på forhånd have genereret en række spil i databasen.
At spille ville så blot være at tage et række fra databasen, og så lade den blive vist et nummer adgangen i browseren.
(det er
Avatar billede nmh Nybegynder
15. august 2003 - 16:14 #10
Ok, men det er lige så let at lave.
Det er det lille program igen, men første gang er det så at læse alt det gemte. Så vælges et nyt tal, og der gemmes i databasen med tal, timestamp etc.
Avatar billede crapman Nybegynder
15. august 2003 - 16:15 #11
Ja, det er simpelthen for at kunne dokumentere det hele.... Alle tidligere spil skal nemlig kunne hentes frem igen.... også derfor alle poster er udstyret med et felt der hedder SPIL..... det er et id for det spil der er igang!

På denne måde kan jeg jo også udskrive alle de tal der er udtrukket i dette spil... sortere dem som jeg vil og sådan
Avatar billede eagleeye Praktikant
15. august 2003 - 16:22 #12
Princippet et sådan her. Den hedter alle de valgte tal, laver en komme liste og findet et nyt tilfældig tal som ikke er i den liste.
Gemmer det i databasen. Du må lige tilføje SPIL ID til de to SQL sætninger så:


<%
SQL = "SELECT tal FROM tabelnavn"
Set rs = Conn.Execute(SQL)
tal = ","
do while not rs.EOF
  tal = tal & rs("tal") & ","
  rs.Movenext
loop
'Så har man en lsite med de tal som er udtrukket.
randomize
do
  nytTal = Int(rnd()*90)+1
loop while inStr(1,tal, ","&nytTal&",")>0

SQL = "INSERT INTO tabelnavn (tal) VALUES (" & nytTal & ")"
Conn.Execute(SQL)
Response.write "Det nye tal er : " & nytTal
%>
Avatar billede eagleeye Praktikant
15. august 2003 - 16:24 #13
Du skal også selv lige tilføje Connection Obejctet til din database;)
Avatar billede eagleeye Praktikant
15. august 2003 - 16:30 #14
ok også tilmestap på så det bliver:


<%
SPIL = Request("SPIL")

SQL = "SELECT tal FROM tabelnavn WHERE spil = " & SPIL
Set rs = Conn.Execute(SQL)
tal = ","
do while not rs.EOF
  tal = tal & rs("tal") & ","
  rs.Movenext
loop
'Så har man en lsite med de tal som er udtrukket.
randomize
do
  nytTal = Int(rnd()*90)+1
loop while inStr(1,tal, ","&nytTal&",")>0

SQL = "INSERT INTO tabelnavn (tal, timestamp, spil) VALUES (" & nytTal & ", Now(), " & SPIL & ")"
Conn.Execute(SQL)
Response.write "Det nye tal er : " & nytTal
%>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester