Avatar billede mortency Nybegynder
16. december 2003 - 12:37 Der er 21 kommentarer og
1 løsning

Select box som lister ut underkategorier via threds

Hei!

Jeg sitter å lager et admin interface til en menu.
Nå brukeren skal endre menu oppbyggningen så skal man kunne velge fra en select boks feks hvor man skal legge menupunktet under.

Det jeg vil er at man skal se hva som hør under hva i select bokse.

Feks:
Biler
-Ford
--Escort
--Mondeo
-Opel

Osv.

Koden ser slik ut! Er det noen som har noen andre gode ideer eller kan hjelpe meg med scriptet?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<body>
<%
dim strConn
strConn = "Provider=SQLOLEDB;Initial Catalog=xxxxxx; Server=xxx.xxx.xxx.xxx;User ID=;Password="

dim adoCn
dim strSQL
set adoCn = Server.CreateObject("ADODB.Connection")
adoCn.Open strConn

Set rsEntries = adoCn.Execute("SELECT * FROM TOC ORDER BY seq desc, label asc")
'Set rsEntries = adoCn.Execute("SELECT * FROM TOC")
'Set rsEntries = adoCn.Execute("selectTBLDOCUMENTSroot") 'Stored procedures

If rsEntries.EOF Then
    Response.Write "<font size=1 face=verdana><ul>Ingen poster!<br></ul></font>"
    Response.Write"<font size=1 face=verdana><ul><a href=add.asp?Action=main>Legg til på rotnivå</a></ul></font>"
    Response.End
End if

Do
  arrID = arrID & "," & rsEntries("id")
  arrRE = arrRE & "," & rsEntries("parent")
  arrSU = arrSU & "," & rsEntries("label")
  arrSUB = arrSUB & "," & rsEntries("sub")
  arrSEQ = arrSEQ & "," & rsEntries("seq")
  rsEntries.MoveNext
Loop while not rsEntries.eof

arrID = Split(arrID,",")
arrRE = Split(arrRE,",")
arrSU = Split(arrSU,",")
arrSUB = Split(arrSUB,",")
arrSEQ = Split(arrSEQ,",")

adoCn.Close

Function Threads(intID)   
  For m = 1 to Ubound(arrID)
    If Cint(arrRE(m)) = Cint(intID) Then
      Threads = Threads & "<font size=1 face=verdana><ul><b>" & arrSU(m) & "</b>&nbsp;<a href=add.asp?Action=sub&Sub=" & arrSub(m) & "&ID=" & arrID(m) & ">(Legg til undermeny)</a>&nbsp;<a href=add.asp?Action=change&Sub=" & arrSub(m) & "&ID=" & arrID(m) & "&Name=" & arrSU(m) & "&Seq="& arrSEQ(m) & ">(Endre)</a>&nbsp;<a href=add.asp?Action=delete&ID=" & arrID(m) & ">(Slett)</a>" & Threads(arrID(m)) & "</ul></font>"
    End If       
Next
End Function

Function Options(intID)   
  For m = 1 to Ubound(arrID)
    If Cint(arrRE(m)) = Cint(intID) Then
      Options = Options & "<option value=" & arrID(m) & ">" & arrSU(m) & "</option>" & Options(arrID(m))
    End If       
Next
End Function

Response.Write"<font size=1 face=verdana><ul><a href=add.asp?Action=main>Legg til på toppnivå</a></ul></font>"

'Skriver ut menyen korrekt
Response.Write Threads(0)

'Select boksen
Response.Write "<select name=test size=22>"
Response.Write "<option value=0>På toppnivå</option>"
Response.Write Options(0)
Response.Write "</select>"
%>
</body>
</html>
Avatar billede roenving Novice
16. december 2003 - 12:48 #1
Er det <optgroup> du har brug for ?-)
Avatar billede mortency Nybegynder
16. december 2003 - 12:50 #2
Muligens hvis det kan gruppere inni en select!
Avatar billede roenving Novice
16. december 2003 - 12:53 #3
En optgroup vil gruppere options, men vil ikke være selectable !-)
Avatar billede roenving Novice
16. december 2003 - 12:57 #4
Eksempel:

<select name="minSelect" id="minSelect" onchange="">
    <option value="">-- Vælg her --<br>
    <option value="1">1</option>
    <optgroup label="Høje værdier">
    <option value="2">2</option>
    <option value="3">3</option></optgroup>
</select>
Avatar billede mortency Nybegynder
16. december 2003 - 13:19 #5
Hvordan legger jeg det inn i scriptet?
Avatar billede eagleeye Praktikant
16. december 2003 - 23:26 #6
Hvordan ser din tabel ud?  Eller hvordan ved man en kategori har underkategorier? Og er output sorteret sådan de kommer i rækefølge?
Avatar billede mortency Nybegynder
17. december 2003 - 09:10 #7
//Eagleeye

Tabellen har følgende kolonner:
-ID(int)
-Label(varchar, Meny navn)
-Sub(bit,1 er sub og 0 er på rot)
-Parent(int, hvilken id menyen ligger under)
-Link(Sier seg selv)
-Seq(Hvilken prioritet meny punktet har)
Avatar billede eagleeye Praktikant
17. december 2003 - 20:02 #8
ok, dit eks har 3 levels:
Biler
-Ford
--Escort
--Mondeo
-Opel

Hvad er max og hvad sikre du at SQL sætningen sortere sådan den hendter dem som:
Biler
Ford
Escort
Mondeo
Open


Hvor mange level kan du havde?
Avatar billede mortency Nybegynder
05. januar 2004 - 15:50 #9
Ubegrenset med levels..
Avatar billede roenving Novice
06. januar 2004 - 01:16 #10
Avatar billede eagleeye Praktikant
06. januar 2004 - 18:55 #11
Som jeg forstår spørgsmålet leder du efter noget kode som dette:

<%
Function Threads(intID)   
  dim m
  dim v
  dim i
  For m = 1 to Ubound(arrID)
    If Cint(arrRE(m)) = Cint(intID) Then
      str = "<option value=""" & arrID(m) & """>" & arrSU(m) & "</option>"
      for i = 1 to Ubound(arrRE)
        v = false
        if arrID(m) = arrRE(i) then
          str = "<optgroup label=""" &  arrSU(m)  &""">"
          v = true
          exit for
        end if
      next
      Threads = Threads & str & Threads(arrID(m))
      if v=true then
        Threads = Threads & "</optgroup>"
      end if
    End If
Next
End Function
%>

Og så det som laver dropdown på formen:
<form>
<select name="navn">
<%=Threads(0)%>
</select>
</form>
Avatar billede roenving Novice
06. januar 2004 - 19:02 #12
-- hov, sry, jeg fik reageret på kommentaren ,-|
Avatar billede eagleeye Praktikant
06. januar 2004 - 19:06 #13
det var jo også en god mulighed med flere selects ;)
Avatar billede mortency Nybegynder
15. januar 2004 - 11:33 #14
//Eagleeye

Hvordan kan jeg få den til å skrive ut med <br> isteden?

Feks i tabeller eller med br? se spm http://www.eksperten.dk/spm/451323 Hvis du fikser dette skal du få pointene for begge spm.

/Morten
Avatar billede eagleeye Praktikant
15. januar 2004 - 16:25 #15
Så det bliver sådan her??:

Biler<br>
Ford<br>
Escort<br>
Mondeo<br>
Opel<br>
Avatar billede mortency Nybegynder
15. januar 2004 - 16:43 #16
//Sånn

Biler<br>
&nbsp;Ford
&nbsp;&nbsp;Escort
&nbsp;&nbsp;Mondeo
&nbsp;Opel
&nbsp;&nbsp;Kadett
&nbsp;&nbsp;Vectra
&nbsp;&nbsp;&nbsp;Tilbehør
Båter

Den skal legge &nbsp;<br> til hvis den er sub til et eller annet.
Avatar billede eagleeye Praktikant
15. januar 2004 - 17:04 #17
Så prøv at lave function Threads om til denne:


Function Threads(intID,level)   
  dim m
  dim v
  dim i
  dim str
  For m = 1 to Ubound(arrID)
    If Cint(arrRE(m)) = Cint(intID) Then
      str=""
      for l=0 to level
        str = str & "&nbsp;"
      next
      Threads = Threads & str & arrSU(m) & "<br>" & Threads(arrID(m),level+1)
    End If
Next
End Function


Og udskrive sådan her:

Response.write Threads(0,0)
Avatar billede mortency Nybegynder
15. januar 2004 - 18:20 #18
Det virker helt fint bortsett fra en liten pirkete ting. Den begynner å legge til "&nbsp; &nbsp;"

Function Threads(intID,level)   
  dim m
  dim v
  dim i
  dim str
  For m = 1 to Ubound(arrID)
    If Cint(arrRE(m)) = Cint(intID) Then
      str=""
      for l=0 to level
        str = str & " &nbsp; &nbsp; "
      next
      Threads = Threads & str & "<b>" & arrSU(m) & "</b>&nbsp;[ <a href=admin_doc_add_2.asp?Action=sub&Sub=" & arrSub(m) & "&ID=" & arrID(m) & ">Legg til undermeny</a> ]" & "<br>" & Threads(arrID(m),level+1) 
    End If
Next
End Function
Avatar billede mortency Nybegynder
15. januar 2004 - 18:21 #19
//Eagleeye fant ut av det. Endret for l to 1 isteden for l to 0.

Function Threads(intID,level)   
  dim m
  dim v
  dim i
  dim str
  For m = 1 to Ubound(arrID)
    If Cint(arrRE(m)) = Cint(intID) Then
      str=""
      for l=1 to level
        str = str & " &nbsp; &nbsp; "
      next
      Threads = Threads & str & "<b>" & arrSU(m) & "</b>&nbsp;[ <a href=admin_doc_add_2.asp?Action=sub&Sub=" & arrSub(m) & "&ID=" & arrID(m) & ">Legg til undermeny</a> ]" & "<br>" & Threads(arrID(m),level+1) 
    End If
Next
End Function
Avatar billede mortency Nybegynder
15. januar 2004 - 18:21 #20
Post et svar.
Avatar billede eagleeye Praktikant
15. januar 2004 - 18:34 #21
Ok ;)
Avatar billede mortency Nybegynder
17. januar 2004 - 15:39 #22
//Eagleeye takker!
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