Avatar billede sbk-eraser Nybegynder
11. april 2005 - 19:17 Der er 24 kommentarer og
1 løsning

Sortering af liste fra database

Hej, nu er jeg på den igen :(
Jeg har denne kildekode :

<%
if session("login") = "" Then
Response.redirect("default.asp")
end if
%>
<% response.buffer = true %><html>

<!--#include file="inc/head.inc"-->

<body bgcolor="#A2B3C6" topmargin="5" leftmargin="0"
rightmargin="0">

<div align="left">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
  <tr>
    <td valign="bottom" height="158">
<img src="inc/billede1.gif"<br><HR SIZE="1" color="#000000">

    </td>
    <td width="116" align="right" valign="top" height="158">
    <img src=inc/billede2.gif>
    </td>
  </tr>
</table>

<table border="0" cellspacing="0" cellpadding="0" width="100%" id="table1">

    <tr>
        <td><b>punkt1:</b></td>
        <td><b>punkt2:</b></td>
        <td><b>punkt3:</b></td>
        <td><b>punkt4:</b></td>
        <td><b>punkt5:</b></td>
        <td><b>punkt6:</b></td>
    </tr>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
strSQL = "select* from XXX ORDER BY PUNKT1 ASC"
set rs = Conn.execute(strSQL)

if rs.EOF then
Response.write ""
else
Do Until rs.EOF
%>
<%
If (i MOD 2 = 0) Then
bg = "#B9C9DC"
Else
bg = "#A2B3C6"
End If
i = i + 1
%>

    <tr style="background-color: <%=bg%>;">
        <td><%=RS("punkt1")%></td>
        <td><%=RS("punkt2")%></td>
        <td><%=RS("punkt3")%></td>
        <td><%=RS("punkt4")%></td>
        <td><%=RS("punkt5")%></td>
        <td><%=RS("punkt6")%></td>
</tr>
<%RS.MoveNext
Loop
end if

Conn.Close
Set Conn = Nothing%>

</table>
</div>
</body>
</html>

Dette gør jo så at siden udskriver en liste fra min database, men jeg har nu det problem at jeg gerne vil ha den til at sortere efter brugerens valg, sådan at man kan trykke f.eks. på "punkt3" og så vil den sortere efter punkt3, altså, a,b,c... osv.

Håber i kan hjælpe mig
Avatar billede busschou Praktikant
11. april 2005 - 19:22 #1
Så skal du lave de øverste i tabellen klik bare i en form som submitter til siden selv og lade databasen vælge ud fra det...
Avatar billede busschou Praktikant
11. april 2005 - 19:28 #2
<tr>
  <form name="punkt1" action="denne.asp" method="post">
    <td onclick="document.forms.punkt1.submit();>
      <input type="hidden" name="punkt1" value="punkt1">
      <b>punkt1:</b>
    </td>
  </form>
  <form name="punkt2" action="denne.asp" method="post">
    <td onclick="document.forms.punkt2.submit();>
      <input type="hidden" name="punkt3" value="punkt2">
      <b>punkt2:</b>
    </td>
  </form>
  <form name="punkt3" action="denne.asp" method="post">
    <td onclick="document.forms.punkt3.submit();>
      <input type="hidden" name="punkt3" value="punkt3">
      <b>punkt3:</b>
    </td>
  </form>
  <form name="punkt4" action="denne.asp" method="post">
    <td onclick="document.forms.punkt4.submit();>
      <input type="hidden" name="punkt4" value="punkt4">
      <b>punkt4:</b>
    </td>
  </form>
  <form name="punkt5" action="denne.asp" method="post">
    <td onclick="document.forms.punkt5.submit();>
      <input type="hidden" name="punkt5" value="punkt5">
      <b>punkt5:</b>
    </td>
  </form>
  <form name="punkt6" action="denne.asp" method="post">
    <td onclick="document.forms.punkt6.submit();>
      <input type="hidden" name="punkt6" value="punkt6">
      <b>punkt6:</b>
    </td>
  </form>
</tr>
Avatar billede busschou Praktikant
11. april 2005 - 19:29 #3
hov det var ikke smart
Lav dem så de alle har name="sorter" og lad deres values være med stort ... så kan de benyttes i din sql
Avatar billede busschou Praktikant
11. april 2005 - 19:30 #4
for så laver du din sql sådan her
if request.form("sorter") <> "" then
  strSQL = "select* from XXX ORDER BY "&request.form("sorter")&" ASC"
else
  strSQL = "select* from XXX ORDER BY PUNKT1 ASC"
end if
Avatar billede busschou Praktikant
11. april 2005 - 19:34 #5
til min kommentar 19:29:53 så er det de hidden felter som skal hedde "sorter" og ikke formen...ellers går det ikke godt... :o)
Håber du kan lure ideen...ellers spørg løs
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 20:37 #6
Jeg kan ikke finde ud af det.. jeg har sat det sammen sådan her :

<table border="0" cellspacing="0" cellpadding="0" width="100%" id="table1">

<%
if request.form("sorter") <> "" then
  strSQL = "select* from XXX ORDER BY "&request.form("sorter")&" ASC"
else
  strSQL = "select* from XXX ORDER BY TITLE ASC"
end if
%>

<tr>
  <form name="sorter" action="list.asp" method="post">
    <td onclick="document.forms.punkt1.submit();>
      <input type="hidden" name="sorter" value="PUNKT1">
      <b>punkt1:</b>
    </td>
  </form>
  <form name="sorter" action="list.asp" method="post">
    <td onclick="document.forms.punkt2.submit();>
      <input type="hidden" name="sorter" value="PUNKT2">
      <b>punkt2:</b>
    </td>
  </form>
  <form name="sorter" action="list.asp" method="post">
    <td onclick="document.forms.punkt3.submit();>
      <input type="hidden" name="sorter" value="PUNKT3">
      <b>punkt3:</b>
    </td>
  </form>
  <form name="sorter" action="list.asp" method="post">
    <td onclick="document.forms.punkt4.submit();>
      <input type="hidden" name="sorter" value="PUNKT4">
      <b>punkt4:</b>
    </td>
  </form>
  <form name="sorter" action="list.asp" method="post">
    <td onclick="document.forms.punkt5.submit();>
      <input type="hidden" name="sorter" value="PUNKT5">
      <b>punkt5:</b>
    </td>
  </form>
  <form name="sorter" action="list.asp" method="post">
    <td onclick="document.forms.punkt6.submit();>
      <input type="hidden" name="sorter" value="PUNKT">
      <b>punkt6:</b>
    </td>
  </form>
</tr>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
strSQL = "select* from XXX ORDER BY TITEL ASC"
set rs = Conn.execute(strSQL)

if rs.EOF then
Response.write ""
else
Do Until rs.EOF
%>
<%
If (i MOD 2 = 0) Then
bg = "#B9C9DC"
Else
bg = "#A2B3C6"
End If
i = i + 1
%>

    <tr style="background-color: <%=bg%>;">
        <td><%=RS("Punkt1")%></td>
        <td><%=RS("Punkt2")%></td>
        <td><%=RS("Punkt3")%></td>
        <td><%=RS("Punkt4")%></td>
        <td><%=RS("Punkt5")%></td>
        <td><%=RS("Punkt6")%></td>
    </tr>
<%RS.MoveNext
Loop
end if

Conn.Close
Set Conn = Nothing%>

</table>


Hvad er der galt ?
Avatar billede busschou Praktikant
11. april 2005 - 20:42 #7
såen her:
----------
<table border="0" cellspacing="0" cellpadding="0" width="100%" id="table1">
<tr>
  <form name="punkt1" action="list.asp" method="post">
    <td onclick="document.forms.punkt1.submit();>
      <input type="hidden" name="sorter" value="PUNKT1">
      <b>punkt1:</b>
    </td>
  </form>
  <form name="punkt2" action="list.asp" method="post">
    <td onclick="document.forms.punkt2.submit();>
      <input type="hidden" name="sorter" value="PUNKT2">
      <b>punkt2:</b>
    </td>
  </form>
  <form name="punkt3" action="list.asp" method="post">
    <td onclick="document.forms.punkt3.submit();>
      <input type="hidden" name="sorter" value="PUNKT3">
      <b>punkt3:</b>
    </td>
  </form>
  <form name="punkt4" action="list.asp" method="post">
    <td onclick="document.forms.punkt4.submit();>
      <input type="hidden" name="sorter" value="PUNKT4">
      <b>punkt4:</b>
    </td>
  </form>
  <form name="punkt5" action="list.asp" method="post">
    <td onclick="document.forms.punkt5.submit();>
      <input type="hidden" name="sorter" value="PUNKT5">
      <b>punkt5:</b>
    </td>
  </form>
  <form name="punkt6" action="list.asp" method="post">
    <td onclick="document.forms.punkt6.submit();>
      <input type="hidden" name="sorter" value="PUNKT6">
      <b>punkt6:</b>
    </td>
  </form>
</tr>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
if request.form("sorter") <> "" then
  strSQL = "select* from XXX ORDER BY "&request.form("sorter")&" ASC"
else
  strSQL = "select* from XXX ORDER BY TITLE ASC"
end if
set rs = Conn.execute(strSQL)

if rs.EOF then
Response.write ""
else
Do Until rs.EOF
%>
<%
If (i MOD 2 = 0) Then
bg = "#B9C9DC"
Else
bg = "#A2B3C6"
End If
i = i + 1
%>

    <tr style="background-color: <%=bg%>;">
        <td><%=RS("Punkt1")%></td>
        <td><%=RS("Punkt2")%></td>
        <td><%=RS("Punkt3")%></td>
        <td><%=RS("Punkt4")%></td>
        <td><%=RS("Punkt5")%></td>
        <td><%=RS("Punkt6")%></td>
    </tr>
<%RS.MoveNext
Loop
end if

Conn.Close
Set Conn = Nothing%>

</table>
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 21:22 #8
Det virker ikke, den siger :
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/list.asp, line 80

----
Linie 80 er :
    set rs = Conn.execute(strSQL)

hvad er der galt med det ?
Avatar billede busschou Praktikant
11. april 2005 - 21:26 #9
prøv lige lave en
----------
response.write (strSQL)
set rs = Conn.execute(strSQL)
----------
Så vi kan se sql´el
Den ene sql hedder order by title .. eksisterer title?
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 21:35 #10
select* from XXX ORDER BY TITLE ASC
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

----
Ja, TITLE eksitere, jeg har kaldt dem andet end punkt1 2 3 osv.
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 21:36 #11
/list.asp, line 81
Avatar billede busschou Praktikant
11. april 2005 - 21:38 #12
if request.form("sorter") <> "" then
  strSQL = "select * from XXX ORDER BY "&request.form("sorter")&" ASC"
else
  strSQL = "select * from XXX ORDER BY TITLE ASC"
end if
---
Der bør nok være mellemrum mellem select og *
Avatar billede busschou Praktikant
11. april 2005 - 21:39 #13
med det den udskriver så må det betyde at enten XXX eller TITLE er gal på den
Er de med store bogstaver i databasen?
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 21:41 #14
select * from XXX ORDER BY TITLE ASC
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/list.asp, line 81

Sker det samme, desværre
Avatar billede busschou Praktikant
11. april 2005 - 21:43 #15
Ok fejlmeddelelsen er klar
Den forventer een parameter og finder ingen...
hmm
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 21:46 #16
altså XXX og TITLE står som det gjorde inden jeg begyndet at sætte denne sorterings kode ind, og der fungerede det som det skulle, altså opsat som i post #1
Avatar billede busschou Praktikant
11. april 2005 - 21:46 #17
I dit oprindelige skrev du følgende
strSQL = "select * from XXX ORDER BY PUNKT1 ASC"
Hvis det virkede hvorfor skulle det andet så ikke virke?
eneste forskel er TITLE
Avatar billede busschou Praktikant
11. april 2005 - 21:47 #18
I den første post brugte du PUNKT1
Avatar billede busschou Praktikant
11. april 2005 - 22:07 #19
du har ikke opgivet vel ;o)?
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 22:34 #20
jeg har ihvertfald opgivet dit forslag.
Har fundet frem til noget som er meget mere simpelt, og som virker
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 22:39 #21
sådan her :

</table>

<table border="0" cellspacing="0" cellpadding="0" width="100%" id="table1">

    <tr>
        <td><b><a href="list.asp?order=punkt1">Punkt1:</b></td>
        <td><b><a href="list.asp?order=punkt2">Punkt2:</a></b></td>
        <td><b><a href="list.asp?order=punkt3">Punkt3:</b></td>
        <td><b><a href="list.asp?order=punkt4">Punkt4:</b></td>
        <td><b><a href="list.asp?order=punkt5">Punkt5:</b></td>
        <td><b><a href="list.asp?order=punkt6">Punkt6:</b></td>
            <td><b><a href="list.asp?order=punkt7">Punkt7:</b></td>
    </tr>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
select case request("order")
case "punkt1"
strSQL = "select* from XXX ORDER BY punkt1 ASC"
case "punkt2"
strSQL = "select* from XXX ORDER BY punkt2 DESC"
case "punkt3"
strSQL = "select* from XXX ORDER BY punkt3 ASC"
case "punkt4"
strSQL = "select* from XXX ORDER BY punkt4 ASC"
case "punkt5"
strSQL = "select* from XXX ORDER BY punkt5 DESC"
case "punkt6"
strSQL = "select* from XXX ORDER BY punkt6 DESC"
case else
strSQL = "select* from XXX ORDER BY punkt7 ASC"
end select
set rs = Conn.execute(strSQL)

if rs.EOF then
Response.write ""
else
Do Until rs.EOF
%>
<%
If (i MOD 2 = 0) Then
bg = "#B9C9DC"
Else
bg = "#A2B3C6"
End If
i = i + 1
%>

    <tr style="background-color: <%=bg%>;">
        <td><%=RS("punkt1")%></td>
        <td><%=RS("punkt2")%></td>
        <td><%=RS("punkt3")%></td>
        <td><%=RS("punkt4")%></td>
        <td><%=RS("punkt5")%></td>
        <td><%=RS("punkt6")%></td>
        <td><%=RS("punkt7")%></td>
    </tr>
<%RS.MoveNext
Loop
end if

Conn.Close
Set Conn = Nothing%>

</table>
Avatar billede sbk-eraser Nybegynder
11. april 2005 - 22:40 #22
Ascending / Descending selvføligelig taget i den rækkefølge jeg har brug for det.
Avatar billede busschou Praktikant
12. april 2005 - 06:38 #23
Det er også fint nok men det ændrer jo stadig ikke på at din fejl nok var at der ikke fandtes en TITLE for den er du jo gået bort fra igen ;o)
Avatar billede sbk-eraser Nybegynder
12. april 2005 - 15:32 #24
Nej, det var ikke fejlen, TITLE eksitere, og har altid eksiteret, der har aldrig eksiteret noget ved navn punkt1 i min kode.
Den kilde du skrev, kan jeg ikke få til at virke ligemeget hvordan jeg vender og drejer den... den jeg selv postede virker uden problemer.
Avatar billede busschou Praktikant
12. april 2005 - 15:34 #25
Fair nok vil ikke mundhakkes over det
Men du kan ikke løbe udenom at det første du postede aller øverst oppe sammen med dit spørgsmål indeholdt følgende
-----------
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
strSQL = "select* from XXX ORDER BY PUNKT1 ASC"
set rs = Conn.execute(strSQL)
-----
altså PUNKT1
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