24. december 2004 - 01:03Der er
9 kommentarer og 1 løsning
Tilfældigt ID fra database
-Hej Eksperter...
-Jeg sidder lige nu og roder med en (temmelig klodset) ASP-kode, som automatisk skal vælge et "element" (enten spil/film) til "Dagens element"... Jeg har fået det hele til at virke (skulle jeg mene) bortset fra den funktion, som skulle vælge et tilfældigt element, hvis ingen andre var valgt den givne dag. Nogen, som kan hjælpe mig? I behøver kun at få den sidste del af koden: (indtil videre, i hvert fald!) _____________________________________________
strSQL = "UPDATE elements SET dagens = date() WHERE id = *TILFÆDIGT ID FRA DATABASEN" set rs = myConn.Execute(strSQL)
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
er ikke helt med på din kode men en kode til at udtrække noget tilfældigt er denne
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("DINDATABASE") Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM TABEL rs.Open strSQL, Conn, 3, 1 rndMax = rs.RecordCount Randomize rndNumber = Int((RND * rndMax)) 'Find et random nummer rs.Move rndNumber 'Flyt til den valgte record %>
Nej, jeg omformulerer lige mit spørgsmål: Hvordan skal min SQL-sætning så se ud? For jeg ville jo først have sat den til at vælge udfra et tilfældigt ID, hvilket jeg ikke længere kan, da der er "huller" i ID-rækken; f.eks. har de henholdsvis ID'erne 1, 2, 3, 5, 8, 9, 10... osv. Og så vil jeg kunne risikere, at ID'et ikke fandtes...
grunden til at jeg bliver forvirret er fordi din kodestump siger update... min kodestump vil udvælge et nyt id hver gang siden loades... måske er jeg ikke helt med på hvad du ønsker... hvad skal det bruges til i hvilken sammenhæng?
Jeg hjælper en ven med en side, som indeholder online spil og film... Og der er blandt andet en celle i designet som viser "Dagens spil/film"... Men han gider ikke selv opdatere den hver dag - f.eks. kan det jo være, han er på ferie, og så kan han ikke opdatere det... Så udfor alle spil/film i db'en har jeg lavet et felt kaldet "dagens". Så - når en bruger besøger forsiden - tjekker min kode, om der eksisterer et spil/film i db'en, hvor "dagens" = date() (altså om denne dags dato findes i databasen) og hvis den GØR det, skal posten udskrives på siden. Hvis den IKKE findes nogle steder (altså hvis alle datoer er forældede) skal den vælge en ny, tilfældig post, som får ændret sin "Dagens" til at indeholde "date()"... Verstehst?
nu forstår jeg hvad du vil have... tror dog stadig mere det er min kode du skal bruge, men ved faktisk ikke hvordan den skal rettes til med dato'en men det noget med en if sætning ind i koden!
Her er en meget simpel måde at gøre det på, men det virker :-)
<% 'angiv størrelse på array dim id(50) 'vælg alle poster i databasen set db=conn.execute("select * from spil order by gruppe")
' Udskriv alle id til et array do while not db.eof nummer = nummer + 1 id(nummer) = db("id") db.moveNext loop
'find et tilfældigt tal mellem 1 og antallet af poster i databasen randomize tal = int(rnd*nummer)+1
'udskriv en tilfældig post ( her er id ikke et nummer men en streng ) set db=conn.execute("select * from spil where id = '"&id(tal)&"'") response.write db("betegnelse")
Men den skal jo vælge mellem alle Id'er i db'en...
Dette er hele min kode: (Ved godt, at den er rodet bygget op...) __________________________________________________________________
<% Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/database.mdb")
strSQL = "SELECT * FROM elements WHERE dagens = date()" set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then strSQL = "SELECT TOP 1 [id], [navn], [picture] FROM [elements] ORDER BY [dagens] DESC"
Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF Response.Write "<br><a class='black' href='element_profil.asp?id=" & rs("id") &"' title='Gå til "" & rs("navn") &""'>" Response.Write "<img border='0' alt='Gå til element' src='" & rs("picture") &"' width='100' height='100'>" Response.Write "</a><br> " rs.MoveNext Loop Else ' Hvis der ikke er skrevet noget Response.Write "<b>Der er ikke angivet et spil/film for i dag!</b><br>" End If
Else
randomize R=clng(100000*rnd) strSQL = "UPDATE elements SET dagens = date() WHERE id = rnd(-(ID)*" & R & ")" set rs = myConn.Execute(strSQL)
strSQL = "SELECT TOP 1 [id], [navn], [picture] FROM [elements] ORDER BY [dagens] DESC" Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF Response.Write "<br><a class='black' href='element_profil.asp?id=" & rs("id") &"' title='Gå til "" & rs("navn") &""'>" Response.Write "<img border='0' alt='Gå til element' src='" & rs("picture") &"' width='100' height='100'>" Response.Write "</a><br> " rs.MoveNext Loop Else ' Hvis der ikke er skrevet noget Response.Write "<b>Der er ikke angivet et spil/film for i dag!</b><br>" End If End If
Det er for resten denne linje: id(nummer) = rs("id") ...
Synes godt om
Ny brugerNybegynder
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.