Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 17:02 Der er 23 kommentarer og
3 løsninger

asp detaljer

Jeg har en liste med nogle point og navne.
Listen sorteres udfra pointsne og kan max indholde 10 poster.

Jeg vil gerne have koden således at når der tilføjes mere end 10 poster så slettes den post med de laveste points. Og så vil jeg gerne have at de højeste point står øverst.

Hjælp?

Her er listen:

http://www.starvision.adsl.dk/tabel/index.htm

Og her er koden:

<%
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db.mdb\")
    Conn.Execute(\"INSERT INTO tabel (thescore, thename) VALUES (\'\" & Request.Form(\"score\") & \"\',\'\" & Request.Form(\"name\") & \"\') \")
    Set RS=Conn.Execute(\"SELECT TOP 10 * FROM tabel ORDER BY thescore\")
 
%>

<body bgcolor=ffffff>
<table>
<tr><td>Score</td><td>Navn</td></tr>
<% do until RS.eof %>
<tr><td><%=rs(\"thescore\")%></td><td><%=rs(\"thename\")%></td></tr>
<% RS.movenext
loop %>
</table>
</body>
Avatar billede eagleeye Praktikant
08. november 2001 - 17:34 #1
Hvis der er flere som har ens skore så får du flere end 10 poster ud..
Avatar billede eagleeye Praktikant
08. november 2001 - 17:35 #2
Det med række følgen er sådan her:

Set RS=Conn.Execute(\"SELECT TOP 10 * FROM tabel ORDER BY thescore DESC\")
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 17:43 #3
Tak nu sorterer den rigtigt.
Har du en fidus i ærmet til hvordan man løser den med scoren så den ikke tilføjer flere end 10?
Avatar billede eagleeye Praktikant
08. november 2001 - 17:45 #4
Jeg er lige ved at kikke på det.
Avatar billede metric Nybegynder
08. november 2001 - 18:21 #5
Lige efter INSERT-query\'en kan du køre flg. SQL-query:

Conn.Execute(\"DELETE FROM tabel WHERE NOT ID IN (SELECT TOP 10 ID FROM tabel ORDER BY thescore DESC)\")

.. sådan :-)
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 18:30 #6
metric > virker ikke der kommer stadig mere end 10.

Var sådan du mente?

Conn.Execute(\"INSERT INTO tabel (thescore, thename) VALUES (\'\" & Request.Form(\"score\") & \"\',\'\" & Request.Form(\"name\") & \"\') \")
Conn.Execute(\"DELETE FROM tabel WHERE NOT ID IN (SELECT TOP 10 ID FROM tabel ORDER BY thescore DESC)\")


Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 18:33 #7
Kan det skyldes at der ikke er noget script der lukker det igen?
Conn.Close
Set Conn = Nothing
Avatar billede metric Nybegynder
08. november 2001 - 18:37 #8
Det burde altså virke.. Det har ikke noget at gøre med at din Conn ikke bliver lukket.. prøv lidt igen, for ovenstående query virker altså :) Måske kan Access ikke fatte query\'en rigtigt - (brug SQL Server ;)
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 18:39 #9
Jeg ved ikke hvad SQL er? Jeg er grøn i asp :)
Avatar billede eagleeye Praktikant
08. november 2001 - 18:46 #10
det virker ikke hvis der er flere der har samme værdi på plads nummer 10 og efter...
Avatar billede pierrehusted Nybegynder
08. november 2001 - 18:49 #11
<%
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db.mdb\")
    Conn.Execute(\"INSERT INTO tabel (thescore, thename) VALUES (\'\" & Request.Form(\"score\") & \"\',\'\" & Request.Form(\"name\") & \"\') \")
    Set RS=Conn.Execute(\"SELECT TOP 10 * FROM tabel ORDER BY thescore DESC\")
 
%>

<body bgcolor=ffffff>
<table>
<tr><td>Score</td><td>Navn</td></tr>
<%
  dim i
  i = 0
  do until RS.eof or i = 10%>
<tr><td><%=rs(\"thescore\")%></td><td><%=rs(\"thename\")%></td></tr>
<% RS.movenext
  i = i + 1
loop %>
</table>
</body>
Avatar billede eagleeye Praktikant
08. november 2001 - 19:10 #12
Prøv dette, det sletter så der kun er 10 tilbage og kun er 10 i tabellen bag efter:


<%

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db.mdb\")

if Request.Form(\"score\") <> \"\" then
  Conn.Execute(\"INSERT INTO tabel (thescore, thename) VALUES (\" & Request.Form(\"score\") & \",\'\" & Request.Form(\"name\") & \"\') \")
  set rs = Conn.Execute(\"SELECT Count(ID) as AntalID FROM tabel\")
  antalRS = rs(\"antalID\")
  set rs = Conn.Execute(\"SELECT * FROM tabel ORDER BY thescore, ID\")
  do while antalRS > 10
    Conn.Execute(\"DELETE FROM tabel WHERE ID = \"  & rs(\"ID\"))
    rs.movenext
    antalRS = antalRS - 1
  loop
end if

%>
<html>
<head></head>
<body bgcolor=ffffff>
<table>
<tr><td>Score</td><td>Navn</td></tr>
<%
Set RS=Conn.Execute(\"SELECT * FROM tabel ORDER BY thescore DESC\")
do until RS.eof %>
  <tr><td><%=rs(\"thescore\")%></td><td><%=rs(\"thename\")%></td></tr>
  <% RS.movenext
loop %>
</table>

</body>
</html>
<%
conn.close
%>
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 19:12 #13
pierrehusted det virker :)
Jeg kunne godt tænke mig at få en nummer liste yderst til venstre og en dato yderst til højre er det også muligt??
Avatar billede eagleeye Praktikant
08. november 2001 - 19:13 #14
Ja men den sletter ikke, den udskriver bare de 10 føreste
Avatar billede eagleeye Praktikant
08. november 2001 - 19:19 #15
Nu med plads og dato:

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db.mdb\")

if Request.Form(\"score\") <> \"\" then
  Conn.Execute(\"INSERT INTO tabel (thescore, thename, dato) VALUES (\" & Request.Form(\"score\") & \",\'\" & Request.Form(\"name\") & \"\', #\"&Date&\"#)\")
  set rs = Conn.Execute(\"SELECT Count(ID) as AntalID FROM tabel\")
  antalRS = rs(\"antalID\")
  set rs = Conn.Execute(\"SELECT * FROM tabel ORDER BY thescore, ID\")
  do while antalRS > 10
    Conn.Execute(\"DELETE FROM tabel WHERE ID = \"  & rs(\"ID\"))
    rs.movenext
    antalRS = antalRS - 1
  loop
end if

%>
<html>
<head></head>
<body bgcolor=ffffff>
<table>
<tr><td>Plads</td><td>Score</td><td>Navn</td><td>Dato</td></tr>
<%
Set RS=Conn.Execute(\"SELECT format(dato,\'dd-mm-yyyy\') as DatoStr, * FROM tabel ORDER BY thescore DESC\")
Counter = 1
do until RS.eof %>
  <tr><td><%=Counter%></td>
      <td><%=rs(\"thescore\")%></td>
      <td><%=rs(\"thename\")%></td>
      <td><%=rs(\"DatoStr\")%></td>
  </tr>
  <%
  Counter = Counter + 1
  RS.movenext
loop %>
</table>


<form method=post action=spm131357.asp>
Point: <input type=text name=score>
name: <input type=text name=name>
<input type=submit>
</form>

</body>
</html>
<%
conn.close
%>
Avatar billede eagleeye Praktikant
08. november 2001 - 19:20 #16
jeg har tilføget en kolonne Dato til tabellen tabel.
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 19:21 #17
eagleeye det er rigtigt, har du en løsning der sletter fra databasen?
Avatar billede eagleeye Praktikant
08. november 2001 - 19:23 #18
Den jeg har vist sletter så der kun er 10 tilbage:


<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db.mdb\")

if Request.Form(\"score\") <> \"\" then
  Conn.Execute(\"INSERT INTO tabel (thescore, thename, dato) VALUES (\" & Request.Form(\"score\") & \",\'\" & Request.Form(\"name\") & \"\', #\"&Date&\"#)\")
  set rs = Conn.Execute(\"SELECT Count(ID) as AntalID FROM tabel\")
  antalRS = rs(\"antalID\")
  set rs = Conn.Execute(\"SELECT * FROM tabel ORDER BY thescore, ID\")
  do while antalRS > 10
    Conn.Execute(\"DELETE FROM tabel WHERE ID = \"  & rs(\"ID\"))
    rs.movenext
    antalRS = antalRS - 1
  loop
end if

%>
<html>
<head></head>
<body bgcolor=ffffff>
<table>
<tr><td>Plads</td><td>Score</td><td>Navn</td><td>Dato</td></tr>
<%
Set RS=Conn.Execute(\"SELECT format(dato,\'dd-mm-yyyy\') as DatoStr, * FROM tabel ORDER BY thescore DESC\")
Counter = 1
do until RS.eof %>
  <tr><td><%=Counter%></td>
      <td><%=rs(\"thescore\")%></td>
      <td><%=rs(\"thename\")%></td>
      <td><%=rs(\"DatoStr\")%></td>
  </tr>
  <%
  Counter = Counter + 1
  RS.movenext
loop %>
</table>

</body>
</html>
<%
conn.close
%>
Avatar billede eagleeye Praktikant
08. november 2001 - 19:28 #19
hov jeg har glemt noget i Conn.execute(\"INSERT INTO....\") PRøv at skifte den ud med denne:


Conn.Execute(\"INSERT INTO tabel (thescore, thename, dato) VALUES (\'\" & Request.Form(\"score\") & \"\',\'\" & Request.Form(\"name\") & \"\', #\"&Date&\"#)\")
 
Avatar billede eagleeye Praktikant
08. november 2001 - 19:29 #20
hvis Score er tekst og det ser sådan ud fra det du viste i spørgsmålet.
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 19:36 #21
Nu virker den som du skrev med rettelsen til sidst, fiiint :)
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 19:38 #22
Jeg må helere ryste op med nogle points :)
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 20:00 #23
Tak
Avatar billede www.starvision.dk Nybegynder
08. november 2001 - 21:22 #24
Listen så brugt her til \'Goose Hunt\' www.starvision.dk
Avatar billede eagleeye Praktikant
08. november 2001 - 21:57 #25
Cool
Man kan spille vidre når der ikke er mere tid tilbage... eller man kan skyde dem som stadig er på den level.
Avatar billede sv99dk Nybegynder
18. december 2004 - 16:27 #26
Eagleeye jeg har desværre mistet databasen, kan du lave scriptet med en XML istedet for :-D ?. MSN: starvision@starvision.dk
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