Avatar billede kramerfan Nybegynder
03. maj 2002 - 10:35 Der er 11 kommentarer og
1 løsning

Sorterer overmenupunkter

Jeg har et CM-system i ASP, hvor jeg gerne vil have mulighed for at vælge i hvilken rækkefølge mine overmenupunkter skal komme op fra DB'en. Men jeg kan ikke lige finde på en smart måde at implementere dette på. Er der en der har en god ide?

Det må være noget med at benytte ORDER BY. Jeg har en unik værdi på de menupunkter, der skal fungerer som overmenuer. Det er dem, jeg gerne vil have mulighed for at sortere.

Hvordan kan man lave et interface, der gør det praktisk og forståeligt at benytte - altså hvilken form skal man benytte?
Avatar billede keysersoze Ekspert
03. maj 2002 - 10:53 #1
lav i din querystring en "orderby" som du så hiver ned i din sql-sætning - fx; default.asp?orderby=asc - eller default.asp?id=orderby=desc

på den måde kan du så styre det i din sql-sætning vha; "SELECT * FROM din_tabel ORDER BY id " & request.querystring("orderby") & ""

selve interfacet kan benytte fx en dropdownbox eller måske lige som her på eksperten bare en lille pil over posterne
Avatar billede kramerfan Nybegynder
03. maj 2002 - 11:15 #2
Mit problem er mere, hvordan man på editeringssiden laver et interface og et sorteringssystem, som giver webmasteren mulighed for at flytte rundt på sine overmenuer - når der f.eks. skal nogle nye ind i systemet.
Avatar billede keysersoze Ekspert
03. maj 2002 - 11:23 #3
så er jeg ikke helt med...
Avatar billede kramerfan Nybegynder
03. maj 2002 - 11:39 #4
Jeg har tænkt mig at lave en editeringsside, hvor der kommer lige så mange dropdown-menuer op som der er overmenuer i DB'en. Så skal dropdown-menu 1. repræsentere 1. plads i menurækken og så fremdeles.
Den første dropdown-menu skal opdatere DB'en med et nummer og SQL skal så hente overmenupunkterne frem efter den rækkefølge, som nummerne i DB'en giver.
Var det til at forstå?
Avatar billede kramerfan Nybegynder
03. maj 2002 - 11:41 #5
Her er koden:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<%
'--------------------,
set conn = server.createobject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath(".../db/data1.mdb")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

SQL1 = "SELECT Overskrift FROM intern WHERE parentid = 0"
set records1 = conn.execute(SQL1)

SQL2 = "SELECT Overskrift FROM intern WHERE parentid = 0"
set records2 = conn.execute(SQL2)
%>

<form name="sortere" method="post" action="sorterer-gateway.asp">
  <table width="600" border="0" align="center" bgcolor="#999999" height="66">
    <tr bgcolor="#999999" bordercolor="#999999" valign="middle">
      <td height="49" colspan="2">
        <div align="center"><b><font size="4">V&aelig;lg i hvilken r&aelig;kkef&oslash;lge
          overmenupunkterne </font></b><font size="4"><b>skal st&aring;.</b></font></div>
      </td>
      </tr>
<%
'-------------
%> 
    <%do while not records2.eof%>
   
    <tr bgcolor="#999999" bordercolor="#999999">
      <td height="49" width="295" valign="middle">
        <p align="center"><b>NR.</b></p>
      </td>
      <td height="49" width="295" valign="middle">
        <div align="right">
          <p>
            <select name=select >
            <%
records1.movefirst%>
            <%
records1.movefirst

do while not records1.eof

%>
            <option value="<%Response.Write(records1(0))%>">
            <%
    Response.Write(records1(0))
    records1.movenext
loop
%>
          </select> 
              </p>
        </div>
              <%
count=count+1
records2.movenext
loop
if count = 0 then
Response.Write("")
records2.close
end if
records2.close%>
           
     
      </td>
    </tr>
<%
'-------------
%> 
       
    <tr bgcolor="#999999" bordercolor="#999999">
      <td height="41" width="295">&nbsp;</td>
      <td height="41" width="295">&nbsp;</td>
    </tr>
  </table>
  </form>
<%
'--------------------
%>

</body>
</html>
Avatar billede kramerfan Nybegynder
03. maj 2002 - 11:43 #6
Problemet er nu at alle dropdown-menuerne får den samme værdi. Det var meningen at de skulle have en numerisk udviklende værdi fra 1 og fremefter.
Har du en god ide til, hvordan man kan ændre det?
Når jeg først har den kan jeg lægge en værdi ned til hvert overmenupunkt og kan derefter sorterer efter disse!!!
Kan du se ideen?
Avatar billede keysersoze Ekspert
03. maj 2002 - 13:08 #7
erhm... nope
Avatar billede -master-d- Nybegynder
03. maj 2002 - 13:29 #8
Du laver da bare en kolonne mere i din tabel. Der giver du hvert enkelt punkt en bestemt værdi fx. 1

Så kan du nemt hente alle punkter hvor værdien 1 indgår.
Sådan her :
strSQL = "Select * From Tabel Where række = 1"

Og hvis du så vil have underpunkter med også kunne du jo lige lave en række mere hvor der kun kan laves ja/nej.

Så kan du nemlig hente dine underpunkter også

strSQL = "Select * From Tabel where (række1 = 1 AND række2 = True)"

Så kunne du jo også bare laver en orderby eller lign.

Håber jeg har forstået dit problem.
Avatar billede kramerfan Nybegynder
03. maj 2002 - 14:01 #9
Mit system er netop, som du har beskrevet Master-d. Det er jeg nu mangler, er at kunne flytte rundt med de punkter, der har værdien 1(i dit eksempel).
Altså at alle med Id'en 1 får en overordnet ID(et nyt felt i DB'en-som man kan hente via ORDER BY).
På den måde vil man kunne flytte rundt med overskrifterne efter de er lagt und i systemet!!
Avatar billede -master-d- Nybegynder
03. maj 2002 - 14:24 #10
Jamen det er da nemt nok, men jeg skal bare vide hvad den skal bruge i Order By,

'For overskriften
strSQL = "Select * From Tabel Where række = 1"
'For underoverskrifter, og så henter den dem alfabetisk.
strSQL = "Select * From Tabel where (række1 = 1 AND række2 = True) ORDER BY række1"

Forstår du systemet ?
Avatar billede kramerfan Nybegynder
03. maj 2002 - 15:04 #11
Jeg tror, vi taler forbi hinanden. Problemet er ikke at lave et ORDER BY kald - det er et spørgsmål om at lægge en værdi ned i DB'en, som er unik for hver overskrift(og glem underoverskrifterne)
Jeg havde tænkt mig at kalde overskrifterne op og derefter give dem hver en værdi - de skulle så hentes op via et ORDER BY kald bagefter.
Mit problem er hvilken slags form jeg skal bruge for at kunne trække f.eks. 10 overskrifter op og derefter give dem en ny værdi og sende dem ned i DB'en igen.
Avatar billede -master-d- Nybegynder
03. maj 2002 - 15:35 #12
Hvorfor vil du gøre det så indviklet, kan du da ikke selv redigere i db'en.
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