Avatar billede fredd Nybegynder
24. september 2004 - 16:26 Der er 15 kommentarer

Random i asp

Hej eksperten..

Jeg har en db-forbindelse jeg gerne vil have til at tage nogle random poster ud fra min db og benytte dem på forsiden...
Jeg har forsøgt med denne SQL-streng: "order by Rnd(id)" - Godt nok tager den nogle random poster, men den tager altid de samme... Nogle der kan hjælpe?

På forhånd tak
/Fredd
Avatar billede eagleeye Praktikant
24. september 2004 - 16:30 #1
Prøv at gøre sådan her ellers vil random nemlig tage de samme poster ud :

<%
randomize
R=clng(1000000*rnd)
SQL = "SELECT TOP 1 * FROM jokes ORDER BY rnd(-(ID)*" & R & ")"
%>
Avatar billede fredd Nybegynder
24. september 2004 - 16:49 #2
Tak for det - nu virker det bedre. Mit script ser nu således ud: www.thouber.dk/script.txt

Hvordan sørger jeg for at den ikke viser den samme type flere gange? (Der er flere med ens værdi i "area"-feltet)
Avatar billede eagleeye Praktikant
24. september 2004 - 16:52 #3
Så skal du holde styr på hvad der er vist og udvide din SQL sætning så den ikke medtager noget den har vist.
Skal det gælde for hver bruger kan du gemme det i session variable hvad den har vist, er det generelt så en post kun må vises en gang kan du lave en kolonne i databasen som du sætte når posten har været vist.
Avatar billede fredd Nybegynder
24. september 2004 - 16:54 #4
.. Og hvordan udvider jeg så min SQL-sætning, så den ikke medtager noget den allerede har vist?
Avatar billede fredd Nybegynder
24. september 2004 - 16:56 #5
(Hvor den ikke medtager poster, hvor "area" i den nye post, er lig med "area" i en tidligere vist post)
Avatar billede eagleeye Praktikant
24. september 2004 - 17:00 #6
Hvis du har et autonummer kolonne kan du gemme "area i sesssion såsådan her


' SQL forespørgsel
randomize
R=clng(1000000*rnd)
strSQL = "Select top 4 * from apartments Where dato <> Null And Type = 'bolig' "
if Session("vist")<>"" then strSQL = strSQL & " and area not in (" &Session("vist") &") "
strSQL = strSQL & "ORDER BY rnd(-(ID)*" & R & ")"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)
if not rs.EOF then
  if session("vist") <> "" then session("vist")=session("vist")&","
  session("vist") = session("vist") & rs("area")
end if



er det en tekst kolonne skal der´ping ' omkring så denne:
  session("vist") = session("vist") & rs("area")

bliver:
  session("vist") = session("vist") & "'" & rs("area") & "'"
Avatar billede fredd Nybegynder
24. september 2004 - 17:07 #7
Det er et tekst-felt, men jeg kan ikke få det til at virke...

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'dato <> Null And Type = 'bolig' and area not in (Nørrebjerg Runddel 'Nørrebjerg Runddel ')'.

/ny/test2.asp, line 22
Avatar billede eagleeye Praktikant
24. september 2004 - 17:09 #8
du skal kun havde en ene af linjerne.
Avatar billede eagleeye Praktikant
24. september 2004 - 17:09 #9
sådan her:

SQL forespørgsel
randomize
R=clng(1000000*rnd)
strSQL = "Select top 4 * from apartments Where dato <> Null And Type = 'bolig' "
if Session("vist")<>"" then strSQL = strSQL & " and area not in (" &Session("vist") &") "
strSQL = strSQL & "ORDER BY rnd(-(ID)*" & R & ")"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)
if not rs.EOF then
  if session("vist") <> "" then session("vist")=session("vist")&","
  session("vist") = session("vist") & "'" & rs("area") & "'"
end if
Avatar billede fredd Nybegynder
24. september 2004 - 17:22 #10
Jeg får igen samme fejl...
Avatar billede eagleeye Praktikant
24. september 2004 - 17:23 #11
hvordan ser koden ud?
Avatar billede fredd Nybegynder
24. september 2004 - 17:26 #12
Avatar billede eagleeye Praktikant
24. september 2004 - 17:29 #13
Prøv at udkskrive strSQL og ikke udføre den før denne linje:
Set rs = Conn.Execute(strSQL)

Sådan her:

response.write strSQL
response.end
Set rs = Conn.Execute(strSQL)


Og tjek der er ' omkring det i in. Jeg bliver nok til at smutte, så prøv at rode lidt med det :)
Avatar billede fredd Nybegynder
24. september 2004 - 21:46 #14
Jeg har stadig ikke fået scriptet til at virke... Har du en anden idé til hvordan vi løser problemet?

På forhånd tak for hjælpen...
Avatar billede eagleeye Praktikant
25. september 2004 - 01:11 #15
Det er løsningen, det virker fint :)
Har du prøvet det jeg forslog at udskrive strSQL?

Hvileken fejl får du?
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