13. marts 2008 - 19:34Der er
17 kommentarer og 1 løsning
skriv nye tilfældige id numre i min database. problemer med loop!
Jeg er ved at prøve at få mit kode til at virke, og er desværre ingen haj til asp.. eller anden programmering for den sags skyld.. men har en ting som jeg skal have lavet alligevel jo :D
Jeg har en database med en række varer som skal vises på en side på samme måde hver gang.. MEN.. en gang imellem skal alle varer kunne blandes... min tanke var at lave et script som gik ind og hentede id og skrev en tilfældig værdi til "nyid" (som jeg har oprettet til lejligheden) og så sortere på nyid på mit site..
lige nu indlæser jeg data og "order by rand".. altså blander dem ved indlæsningen (omend jeg godt ved at det ikk er 1000% tilfældigt.. men det er fint nok) og dernæst i et loop skriver et nummer som er i en variabel for til sidst at addere variablen med 1... problemet opstår i at mit script skriver den "endelige" værdi af min nummer-variabel ud til alle mine rækker i tabellen, hvilket jo ikke var meningen.. hvorfor gør den dette, og hvordan kan jeg løse det ??
Har prøvet at flytte rundt på tingene osv osv.. men uden held.. samme resultat eller blot fejlmeldninger..
Her er min kode...
<% dim rs, sql, sqlupdate, nummer set rs = server.createobject("adodb.recordset") sql = "SELECT * FROM tabelnavn ORDER BY RAND()" rs.open sql,cn,0,1,1 %> <% do until rs.eof %> <% nummer=nummer+1 sqlupdate = "update tabelnavn SET nyid=" & nummer cn.Execute(sqlupdate) %> <% rs.movenext loop %> <% rs.close set rs = Nothing %>
Håber nogle kan finde problemet og forhåbentligt en løsning ?
fantastisk.. og havde ellers prøvet med noget meget tæt derpå.. men der ville det ikke lige spille.. quick fix.. det kan vi li.. heh.. men til problemet.. hvis jeg brugte en where, ville jeg jo ikke få opdateret dem alle, ville jeg ?
har både et id og et nyid.. og så en række andre oplysninger også self..
hvis ikke jeg havde et id udover nyid som får det tilfældige nummer, ville jeg formentligt få et problem hvis rand genererede to ens numre som skulle være unikke og så ikke blev det..
Hvid du har et ifd-felt, så kunne det f.eks. være gjort sådan:
<% dim rs, sql, sqlupdate, nummer set rs = server.createobject("adodb.recordset") sql = "SELECT * FROM tabelnavn ORDER BY RAND()" rs.open sql,cn,0,1,1
nummer = 0 do until rs.eof nummer = nummer + 1 sqlupdate = "update tabelnavn SET nyid = " & nummer & " where id = " & rs("id") cn.Execute(sqlupdate)
rs.movenext loop
rs.close set rs = Nothing %>
> hvis ikke jeg havde et id udover nyid som får det tilfældige nummer, ville jeg formentligt få et problem hvis rand genererede to ens numre som skulle være unikke og så ikke blev det..
Hvis vi lige ser bort fra det meget usandsynlige at dette ville ske ... hvorfor ville det være et problem?
der skal vel være en unik primary key i ens tabel såvidt jeg har forstået ?
og det samme prøvede jeg faktisk også.. jeg brugte dog rs.fields("id") i stedet.. det er vist hvad det hedder når jeg har haft kaldt data frem andre gange på de resterende sider... Det er ikke let at vide præcist hvilken syntaks man skal bruge, når man famler halvejs i blinde.. ved godt hvad det er jeg vil og hvordan.. men præcist hvordan man skriver det er lidt tricky.. :/
men jeg siger 1000 tak for hjælpen :)
hvordan stikker jeg dig nogle point ? skal du ikke komme med et svar først så ? (nu dine andre indlæg her står som kommentarer)
nej id er primary key.. men min pointe var at hvis jeg kun havde id, som jeg updatede og så fik to ens tal, ville det give et problem da den er primary key..
Jamen, så mangler du vel bare at acceptere mit svar :^)
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.