Avatar billede steen_hansen Forsker
07. oktober 2004 - 21:25 Der er 107 kommentarer og
1 løsning

Dynamisk menu

Jeg vil gerne kunne oprette hovedmenupunkter med dertilhørende undermenupunkter. Desuden skal de også kunne sorteres v.hj.a. <input type="text" value="X">, hvor X = prioriteringen (ORDER BY priority), og det er til en Access Database.

Det har første prioritet. Jeg kunne også tænke mig en menu, der fungerer efter dette princip: http://www.alsacreations.com/articles/deroulant/menu-vertical.htm

Jeg ved ikke hvordan man nemmest tjekker på, om det ene eller det andet hovedmenupunkt er valgt, så alle undermenuerne herunder bliver vist, og de andre hovedmenupunkter er lukket sammen. Jeg sætter gerne point op til maks, hvis du også kan levere denne løsning.
Avatar billede steen_hansen Forsker
07. oktober 2004 - 21:27 #1
PS: Med denne menu

http://www.alsacreations.com/articles/deroulant/menu-vertical.htm

er det ikke nødvendigt at sætte styles på. Bare den rå kode, så jeg selv kan bestemme designet.
Avatar billede rbl Praktikant
07. oktober 2004 - 21:31 #2
Prøv at gå ind på den side du henviser til og tryk på højre musetast. Tryk derefter på "Vis kode".

Så har du koden til det.
Avatar billede rbl Praktikant
07. oktober 2004 - 21:31 #3
hov, det hedder "Vis kilde"
Avatar billede steen_hansen Forsker
07. oktober 2004 - 21:34 #4
Det er ikke det, det går ud på :o)

Jeg skal først og fremmest kunne oprette hovedmenupunkter med tilhørende undermenupunkter. De skal jo trækkes ud i en løkke, og den menu skal, som jeg har linket til, skal slet ikke bruges. Det var kun for at kunne illustrere :o)
Avatar billede steen_hansen Forsker
07. oktober 2004 - 21:37 #5
Sådan skal knyttes til hovedmenuerne i DB'en, inkl. prioritering:

hovedmenu1
- undermenupunkt1a  1
- undermenupunkt1b  2
- undermenupunkt1c  3

hovedmenu2
- undermenupunkt2a  1
- undermenupunkt2b  2
- undermenupunkt2c  3
- undermenupunkt2d  4
- undermenupunkt2e  5
- undermenupunkt2f  6
Avatar billede rbl Praktikant
07. oktober 2004 - 21:44 #6
Er det udformningen af tabellen i databasen, du vil have hjælp til, eller har du allerede en database, som du skal have data ud af ?

Hvis du har en database, hvordan ser tabellen så ud ?
Avatar billede steen_hansen Forsker
07. oktober 2004 - 21:50 #7
Jeg har intet, der startes fra bunden.
Avatar billede rbl Praktikant
07. oktober 2004 - 21:56 #8
Ok, du kan vælge at have én eller to tabeller. Det er nok nemmest at overskue, hvis du har 2.

Tabel1:
Navn: Hovedmenu
Værdier: id (int), navn (varchar)

Tabel2:
Navn: submenu
Værdier: id (int), parent (int), navn (varchar)

I tabel1 har du alle hovedmenuerne, og i tabel2 har du alle undermenuerne. Undermenuerne har en "parent"-værdi, der indikerer hvilken hovedmenu den hører til.
Avatar billede rbl Praktikant
07. oktober 2004 - 22:00 #9
Du skal nok også have en værdi for prioritering. Det skal bare være en int.
Avatar billede rbl Praktikant
07. oktober 2004 - 22:01 #10
Er der andre ting, den skal kunne sorteres efter ?
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:05 #11
Nej, menuerne skal bare sorteres efter den rækkefølge, som administratoren angiver. Dvs. der nok skal sorteres efter hovedmenuerne. I den hovedmenu, som han vælger skal være øverst i menuen, indtaster han værdien 1. Den næste får værdien 2 osv. Undermenupunkterne skal så bare følge med hovedmenupunktet. Er det til at forstå? :o)

Jeg går lige igang med at lave de 2 tabeller.
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:08 #12
int = langt heltal?
varchar = ...?
Avatar billede rbl Praktikant
07. oktober 2004 - 22:10 #13
Jeg bruger normalt MSSQL, så derfor de betegnelser :-)

int er bare et almindeligt tal, det behøves ikke være langt.
varchar er almindelig tekst (kan ikke huske hvad det hedder i Access)
Avatar billede rbl Praktikant
07. oktober 2004 - 22:11 #14
og ja, int er et heltal
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:16 #15
Ok, så er der styr på det :o)

Almindelig tekst hedder bare "Tekst" - dansk MS Access :o)
Avatar billede rbl Praktikant
07. oktober 2004 - 22:22 #16
Ok, så kan du indsætte noget testdata, så der både er hovedmenuer og undermenuer. Husk at "Parent"-værdien i undermenuerne skal være en værdi fra hovedmenuernes id'er
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:22 #17
Nu har jeg to tabeller:

menumain
- ID (tal, primærnøgle)
- mainmenu (tekst)
- priorityID (tal)

menusub:
- ID (tal, primærnøgle)
- parent (tekst)
- submenu (tekst)


Den er vel ok nu?
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:23 #18
Som f.eks.

menumain:
- ID = 1

menusub:
- parent = 1
Avatar billede rbl Praktikant
07. oktober 2004 - 22:25 #19
parent skal være et tal.
skal der ikke også være prioritet på undermenuerne ?
Avatar billede rbl Praktikant
07. oktober 2004 - 22:25 #20
ja
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:25 #21
Nej, du mener vel dette:

menumain:
- ID = Velkommen

menusub:
- parent = Velkommen
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:26 #22
Ok, jeg benytter tal, så :o)

Jo, der skal vel også være prioritering på undermenuerne.
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:29 #23
Se bort fra 07/10-2004 22:25:52 - rent vrøvl :o)
Avatar billede rbl Praktikant
07. oktober 2004 - 22:31 #24
jeg er lige ved at lave løkkerne, som du skal bruge.

Ved du hvordan du laver forbindelse til databasen i asp ?
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:34 #25
Ja, den er på plads:

<%
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/fpdb/borch.mdb")
%>
Avatar billede rbl Praktikant
07. oktober 2004 - 22:35 #26
Ok, det er jo godt :-)

Prøv det her (jeg håber det virker i første forsøg):

<%
set menuer = conn.execute("select * from menumain order by priorityID asc")


do while not menuer.eof
%>
<%=menuer("mainmenu")%>
  <ul>
<%
  set undermenuer = Conn.execute("select * from menusub where parent = " & menuer("id") " order by priorityID asc")
 
  do while not undermenuer.eof
    %>
    <li><%=undermenuer("submenu")%></li>
    <%
    undermenuer.movenext
  loop
%>
  </ul>
<%
menuer.movenext
loop

%>
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:35 #27
Jeg prøver :o)
Avatar billede rbl Praktikant
07. oktober 2004 - 22:36 #28
Det ser sikkert grimt ud, men det skal bare styles lidt... :-)
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:38 #29
Hm, en lille fejl:

Microsoft VBScript compilation error '800a03ee'

Expected ')'

/admin_menus/default.asp, line 12

set undermenuer = Conn.execute("select * from menusub where parent = " & menuer("id") " order by priorityID asc")
--------------------------------------------------------------------------------------^
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:40 #30
Avatar billede rbl Praktikant
07. oktober 2004 - 22:41 #31
Der mangler et &-tegn i sætningen. Ret den til:

set undermenuer = Conn.execute("select * from menusub where parent = " & menuer("id") & " order by priorityID asc")
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:45 #32
Ok, så er den på plads, men jeg mangler vist at indtaste data i DB? Kigger lige ...
Avatar billede rbl Praktikant
07. oktober 2004 - 22:49 #33
ja, det kunne godt tyde på, at der mangler nogle værdier.
Du kan sikre dig i koden, at den ikke fejler på grund af det:

<%
set menuer = conn.execute("select * from menumain order by priorityID asc")


do while not menuer.eof
%>
<%=menuer("mainmenu")%>
  <ul>
<%
  menuid = trim(menuer("id"))
  if menuid = "" then menuid = 0
  set undermenuer = Conn.execute("select * from menusub where parent = " & menuid & " order by priorityID asc")
 
  do while not undermenuer.eof
    %>
    <li><%=undermenuer("submenu")%></li>
    <%
    undermenuer.movenext
  loop
%>
  </ul>
<%
menuer.movenext
loop

%>
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:51 #34
Det forstår jeg ikke, jeg har indtastet data i alle RS

menumain:
- ID = 1
- mainmenu = Velkommen
- priorityID = 1

menusub:
- ID = 1
- parent = 1
- submenu = Hjem
Avatar billede rbl Praktikant
07. oktober 2004 - 22:53 #35
prøv at sætte denne linie ind lige før linien "set undermenuer =...":

response.write(menuer("id"))
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:54 #36
Det er gjort, og nu udskrives værdien 1
Avatar billede rbl Praktikant
07. oktober 2004 - 22:56 #37
Hvilken linie er det den fejler i ?
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:56 #38
Linie 15:

set undermenuer = Conn.execute("select * from menusub where parent = " & menuid & " order by priorityID asc")
Avatar billede steen_hansen Forsker
07. oktober 2004 - 22:56 #39
Avatar billede rbl Praktikant
07. oktober 2004 - 22:58 #40
hvad har du kaldt prioritetsværdien i tabellen "menusub" ?

Prøv at erstatte response.write(menuer("id")) med:

response.write("select * from menusub where parent = " & menuid & " order by priorityID asc")
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:05 #41
Den har fået værdien 2

Linien er erstattet, prøv at kigge :o)
Avatar billede rbl Praktikant
07. oktober 2004 - 23:07 #42
Det var ikke det, jeg mente. Hedder den "priorityID" ligesom i menumain ?

Sql-udtrykket bliver konstrueret korrekt. Er du sikker på, at du fik lavet "Parent" om til et tal ?  Det skal være samme datatype som ID
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:07 #43
menumain:
- ID = 1
- mainmenu = Velkommen
- priorityID = 1

menusub:
- ID = 1
- parent = 1
- submenu = Hjem
- priorityID = 2
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:08 #44
Ok, det er også samme datatype, og den hedder "priorityID" i begge tabeller
Avatar billede rbl Praktikant
07. oktober 2004 - 23:09 #45
Prøv:
set undermenuer = Conn.execute("select * from menusub where parent = '" & menuid & "' order by priorityID asc")
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:12 #46
Det har jeg gjort, men nu tror jeg der er gået noget galt på serveren, prøv lige at kigge på siden. conn.asp, som bliver inkluderet i toppen, ser således ud:

<%
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/fpdb/borch.mdb")
%>

Det må da være et eller andet hos min host, der er gået galt?
Avatar billede rbl Praktikant
07. oktober 2004 - 23:14 #47
Enten det ellers er det din database, det er gået i kludder.

Prøv at uploade den igen.
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:17 #48
Den var lukket forkert, og nu er den der sq :o)
Avatar billede rbl Praktikant
07. oktober 2004 - 23:17 #49
så var den der :-)

bare fjern linien "response.write(....)"
Avatar billede rbl Praktikant
07. oktober 2004 - 23:18 #50
Prøv at oprette nogle flere menupunkter
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:20 #51
Fedest :o)

Så skal der kunne oprettes hovedmenuer, som man kan tilføje undermenupunkter til, og administrere/prioritere. Vil du lave det for max point, eller ...?
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:20 #52
Jeg prøver
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:22 #53
Jeg skal lige høre dig ad: ID i menusub, den kan vel godt starte med 1, og så ellers tælle opad? Burde det ikke have været autonummerering istedet for et tal?
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:25 #54
Den er pinge-ling, det funker bare :o)

Glem 07/10-2004 23:22:44, jeg har prøvet at ændre, og det virker perfekt :o)
Avatar billede rbl Praktikant
07. oktober 2004 - 23:26 #55
jo, autonumerering både for ID i menumain og ID i menusub
Avatar billede rbl Praktikant
07. oktober 2004 - 23:27 #56
Det er faktisk ikke så svært at lave det adn-system, men jeg vil da gerne hjælpe dig.

Bare ikke i aften, jeg skal på arbejde i morgen tidlig.
Avatar billede rbl Praktikant
07. oktober 2004 - 23:27 #57
*adm-system

Det er vist ved at blive lidt sent :-)
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:27 #58
Det kører bare, rbl :)
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:29 #59
Ja, jeg ved det, og point er ikke meget. Men der skal vel laves en løkke, som trækker hovedmenuerne ud med de tilhørende underpunkter.

Jeg TROR jeg kan lave det selv. Hvis jeg kører fast, kan jeg så lokke dig til at kigge på det?
Avatar billede rbl Praktikant
07. oktober 2004 - 23:32 #60
jo, selvfølgelig. Jeg gør det nu ikke for pointenes skyld.

Jeg abonnerer stadig på denne tråd, så hvis du skriver her, får jeg automatisk en mail.
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:32 #61
Jeg TROR jeg har styr på det. Kan vi kigge lidt på det, når du har tid? Jeg vil gerne bare have, at du lige kigger mig over skulderen og går det efter.
Avatar billede steen_hansen Forsker
07. oktober 2004 - 23:33 #62
Du er en kammerat :o)

Jeg tror også jeg vil daffe i seng nu. Vi snakkes :o)
Avatar billede rbl Praktikant
07. oktober 2004 - 23:37 #63
Jo, jeg er tilbage i morgen aften.

ses...
Avatar billede steen_hansen Forsker
08. oktober 2004 - 00:12 #64
Det er fedt, det her. Så kan jeg jo også lave sitemap! Ses ... :o)
Avatar billede steen_hansen Forsker
08. oktober 2004 - 01:17 #65
Jeg har lavet lidt om, så jeg kunne få det hele til at passe, men det virker perfekt på min måde også :o)


<!-- #include virtual="/borch/includes/data.asp" -->
<!-- #include virtual="/borch/includes/conn.asp" -->
<!-- #include virtual="/borch/includes/functions_.asp" -->

<html>

<!-- #include virtual="/borch/includes/header.asp" -->

<body>

<div align="center">
    <table border="0" cellpadding="2" cellspacing="0" id="maintable" class="text11">

        <%
        SET RS = Conn.Execute("SELECT * FROM menumain ORDER BY priorityID ASC")

        Do While NOT RS.EOF
        %>

        <tr>
            <td align="left" valign="top" colspan="2" style="border-bottom: dashed 1px black;"><b><%=Server.HTMLEncode(RS("mainmenu"))%></b></td>
        </tr>
        <tr>
            <td style="width: 20px;">&nbsp;</td>
            <td align="left" valign="top">

                <%
                menuID = Trim(Server.HTMLEncode(RS("ID")))
                If menuID = "" Then menuID = 0
                SET RS1 = Conn.Execute("SELECT * FROM menusub WHERE parent = '" & menuID & "' ORDER BY priorityID ASC")

                Do While NOT RS1.EOF
                %>

                <a href="<%=Server.HTMLEncode(RS1("url"))%>" onfocus="this.blur();"><%=Server.HTMLEncode(RS1("submenu"))%></a><br>

                <%
                RS1.MoveNext
                Loop
                %>

            </td>
        </tr>

        <%
        RS.MoveNext
        Loop

        Conn.Close
        %>

    </table>
</div>

</body>

</html>
Avatar billede steen_hansen Forsker
08. oktober 2004 - 17:50 #66
Jeg har ændret stiangivelsen til http://www.include.dk/borch/admin/menus/

Hvis du har tid, håber jeg lige du vil vælge "Rediger menu". Her vil jeg liste alle hovedmenupunkterne ud, og de skal være links til de valgte punkt og de dertilhørende undermenuer, men det driller sq :o(

Kan du umiddelbart se løsningen? Så ville jeg være glad :o)

<!-- #include virtual="/borch/includes/data.asp" -->
<!-- #include virtual="/borch/includes/conn.asp" -->
<!-- #include virtual="/borch/includes/functions_.asp" -->

<html>

<!-- #include virtual="/borch/includes/header.asp" -->

<body>

<div align="center">
    <table border="0" cellpadding="0" cellspacing="0" id="maintable" class="text11">
        <tr>
            <td colspan="2">Banner</td>
        </tr>
        <tr>
            <td align="left" valign="top" id="menu">Menu</td>
            <td align="left" valign="top">
                <table border="0" cellpadding="0" cellspacing="0" id="maintable" class="text11">

                        <%
                        SET RS = Conn.Execute("SELECT * FROM menumain ORDER BY priorityID DESC")

                        Do While NOT RS.EOF
                        %>

                    <tr>
                        <td align="left" valign="top"><a href="/borch/admin/menus/editmenu.asp?menuID=<%=Server.URLEncode(RS("ID"))%>" onfocus="this.blur();"><%=Server.HTMLEncode(RS("mainmenu"))%></a></td>
                    </tr>

                        <%
                        RS.MoveNext
                        Loop

                        Conn.Close
                        %>
                </table>
            </td>
        </tr>
        <tr>
            <td colspan="2">Bund</td>
        </tr>
    </table>
</div>

</body>

</html>
Avatar billede steen_hansen Forsker
08. oktober 2004 - 17:51 #67
Ups, problemet er i editmenu.asp:

<!-- #include virtual="/borch/includes/data.asp" -->
<!-- #include virtual="/borch/includes/conn.asp" -->
<!-- #include virtual="/borch/includes/functions_.asp" -->

<html>

<!-- #include virtual="/borch/includes/header.asp" -->

<body>

<%
Dim menuID
menuID = Request.Querystring("menuID")

Set RS = Conn.Execute("SELECT * FROM menumain WHERE menuID = '" & SQLEncode("ID") & "'")
%>

<input type="text" size="<%=Size%>" value="<%=Server.HTMLEncode(RS("mainmenu"))%>">

<% Conn.Close %>

</body>

</html>
Avatar billede rbl Praktikant
08. oktober 2004 - 22:59 #68
Jeg er først lige kommet hjem :-)

Ret linien:
Set RS = Conn.Execute("SELECT * FROM menumain WHERE menuID = '" & SQLEncode("ID") & "'")
til:
Set RS = Conn.Execute("SELECT * FROM menumain WHERE ID = '" & menuID & "'")
Avatar billede steen_hansen Forsker
09. oktober 2004 - 08:46 #69
Det er 10-4, jeg er kun glad når/hvis du har tid :o)

Jeg HAR prøvet den linie, og jeg får denne fejl:

Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.

/borch/admin/menus/editmenu.asp, line 16



Koden ser nu sådan ud:

<!-- #include virtual="/borch/includes/data.asp" -->
<!-- #include virtual="/borch/includes/conn.asp" -->
<!-- #include virtual="/borch/includes/functions_.asp" -->

<html>

<!-- #include virtual="/borch/includes/header.asp" -->

<body>

<%
Dim menuID
menuID = Request.Querystring("menuID")

'Set RS = Conn.Execute("SELECT * FROM menumain WHERE menuID = '" & SQLEncode("ID") & "'")
Set RS = Conn.Execute("SELECT * FROM menumain WHERE ID = '" & menuID & "'")
%>

<input type="text" size="<%=Size%>" value="<%=Server.HTMLEncode(RS("mainmenu"))%>">

<% Conn.Close %>

</body>

</html>
Avatar billede rbl Praktikant
09. oktober 2004 - 14:31 #70
Prøv denne i stedet:
Set RS = Conn.Execute("SELECT * FROM menumain WHERE ID = " & menuID)

Er du sikker på ar menuID indeholder en værdi ?
Avatar billede steen_hansen Forsker
09. oktober 2004 - 15:22 #71
Jeg er sikker på menuID, den er god nok. Men jeg er ikke sikker på ID nu:

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'ID ='.

/borch/admin/menus/editmenu.asp, line 15


<!-- #include virtual="/borch/includes/data.asp" -->
<!-- #include virtual="/borch/includes/conn.asp" -->
<!-- #include virtual="/borch/includes/functions_.asp" -->

<html>

<!-- #include virtual="/borch/includes/header.asp" -->

<body>

<%
Dim menuID
menuID = Request.Querystring("menuID")

Set RS = Conn.Execute("SELECT * FROM menumain WHERE ID = " & menuID)
%>

<input type="text" size="<%=Size%>" value="<%=Server.HTMLEncode(RS("mainmenu"))%>">

<% Conn.Close %>

</body>

</html>
Avatar billede steen_hansen Forsker
09. oktober 2004 - 15:23 #72
- Og min conn.asp ser sådan her ud:

<%

    Set Conn = CreateObject("ADODB.Connection")
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/fpdb/borch.mdb")

%>

Så det burde da være i orden?
Avatar billede rbl Praktikant
09. oktober 2004 - 16:25 #73
Prøv lige efter linien:
menuID = Request.Querystring("menuID")

at skrive:
response.write("MenuID: " & menuID)

Jeg tror ikke at du får nogen værdi med over i Querystring-stringen.
Avatar billede steen_hansen Forsker
09. oktober 2004 - 16:28 #74
Det har du nok ret i, nu får jeg dette:

MenuID:
Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'ID ='.

/borch/admin/menus/editmenu.asp, line 15
Avatar billede rbl Praktikant
09. oktober 2004 - 16:34 #75
Hvordan afgør du hvilken menu, der skal redigeres ?
Avatar billede steen_hansen Forsker
09. oktober 2004 - 16:37 #76
aahhh, det er nok mig, der sover godt og grundigt :oD Jeg har prøvet med dette:

<a href="/borch/admin/menus/editmenu.asp?menuID=<%=Server.URLEncode(RS("ID"))%>" onfocus="this.blur();"><%=Server.HTMLEncode(RS("mainmenu"))%></a>

Dette er listen med alle hovedmenu-links. Det er så meningen, at man skal kunne gå ind på den enkelte og rette i eksisterende, tiføje og slette.
Avatar billede steen_hansen Forsker
09. oktober 2004 - 16:38 #77
... og sætte prioriteterne, selvfølgelig.
Avatar billede rbl Praktikant
09. oktober 2004 - 16:42 #78
ok, jeg prøver lige at lave noget kode.
Avatar billede steen_hansen Forsker
09. oktober 2004 - 16:43 #79
Tak, venter i spænding :o)
Avatar billede rbl Praktikant
09. oktober 2004 - 16:49 #80
hov, din egen kode virker da.

Hvis du først trykker på "Se alle", så virker det.
Avatar billede steen_hansen Forsker
09. oktober 2004 - 16:52 #81
Jeg kigger lige :o)
Avatar billede steen_hansen Forsker
09. oktober 2004 - 16:54 #82
Jo, den virker fint nok. Men når jeg skal ind at redigere hovedmenu-links og submenus, så går det galt. "Se alle" er bare en liste over samtlige hovedmenulinks. Det er når jeg skal trække hovedmenu-linket med de tilhørende submenus frem (editmenu.asp?menuID=4), at kæden hopper af :/
Avatar billede steen_hansen Forsker
09. oktober 2004 - 16:57 #83
Det er meningen, at jeg skal have:

<input type="text" value="<%=hovedmenunavn%>
- <input type="text" value="<%=undermenu1%>"> <input type="text" value="<%=priority%>">
- <input type="text" value="<%=undermenu2%>"> <input type="text" value="<%=priority%>">
- <input type="text" value="<%=undermenu3%>"> <input type="text" value="<%=priority%>">

<input type="submit">
Avatar billede rbl Praktikant
09. oktober 2004 - 17:05 #84
Prøv det her:


<!-- #include virtual="/borch/includes/data.asp" -->
<!-- #include virtual="/borch/includes/conn.asp" -->
<!-- #include virtual="/borch/includes/functions_.asp" -->

<html>

<!-- #include virtual="/borch/includes/header.asp" -->

<body>

<%
Dim menuID
menuID = Request.Querystring("menuID")

Set RS = Conn.Execute("SELECT * FROM menumain WHERE ID = " & menuID)
set submenu = conn.execute("select * from menusub where parent='" & menuID & "' order by priorityID asc")
%>

<form name="opdatermenu" action="opdatermenu.asp" method="post">
<input type="hidden" name="ID" value="<%=RS("ID")%>">
<input type="text" name="menunavn" size="<%=Size%>" value="<%=Server.HTMLEncode(RS("mainmenu"))%>">
<input type="text" name="prioritet" value ="<%=RS("priorityID")%>">
<input type="submit" name="submit" value="Gem">
</form>
<br><br>

<%
i = 1
do while not submenu.eof
%>
  <form name="opdatermenu<%=i%>" action="opdatersub.asp" method="post">
  <input type="hidden" name="ID" value="<%=RS("ID")%>">
  <input type="text" name="menunavn" value="<%=submenu("submenu")%>">
  <input type="text" name="prioritet" value ="<%=submenu("priorityID")%>">
  <input type="submit" name="submit" value="Gem">
  </form>   
<%
  i = i+1
  submenu.movenext
loop
%>

<% Conn.Close %>

</body>

</html>
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:06 #85
Og det er til editmenu.asp?
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:07 #86
Det var mystisk, jeg har lige set, at det virkede. Jeg prøver lige med dit forslag.
Avatar billede rbl Praktikant
09. oktober 2004 - 17:08 #87
ja, til editmenu.asp
Avatar billede rbl Praktikant
09. oktober 2004 - 17:09 #88
Det virker vist, men der mangler lidt forklarende tekst :-)
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:12 #89
Fedest, der funker jo! :o)

Ja, den forklarende tekst er jo lige til at smide ind. Men hvordan og hvorledes med opdatersub.asp?
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:14 #90
Kunne man ikke bare benytte editmenu.asp, istedet for opdatermenu.asp og opdatersub.asp? Altså på sådan en måde, at man altid befinder sig i editmenu.asp, men evt. får udskrevet et sted på siden med røde bogstaver "Opdateringen er gennemført" eller noget i den stil?

Prøver lige at hive noget gammelt kode frem til eksempel ...
Avatar billede rbl Praktikant
09. oktober 2004 - 17:16 #91
jo, det kan man godt, men koden kan godt blive lidt rodet.

Som bruger af systemet vil man ikke kunne se forskel.
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:21 #92
Ok. Hvad skal der så være på opdatermenu.asp og opdatersub.asp?

Jeg har faktisk noget, som er sk... godt. Prøver lige at se, om jeg kan få dig uden om login, så du kan se det i praksis ...
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:21 #93
Har du en e-mail, som du vil oplyse her?
Avatar billede rbl Praktikant
09. oktober 2004 - 17:26 #94
jo, du kan bare sende til send@pc.dk
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:32 #95
Ok, du har fået en mail :o)
Avatar billede rbl Praktikant
09. oktober 2004 - 17:34 #96
der står at brugeren ikke eksisterer
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:38 #97
Sorry, jeg ventede på en e-mail fra dig, og glemte at gemme og lukke databasen :o)

Prøv igen, den skulle være god nok nu.
Avatar billede rbl Praktikant
09. oktober 2004 - 17:40 #98
ok, nu er jeg inde.
Avatar billede steen_hansen Forsker
09. oktober 2004 - 17:48 #99
Virker det ikke meget godt? Du har ret i, at koden vil blive mere overskuelig, men alligevel ...? Hvad skulle der i givet fald være på opdatermenu.asp og opdatersub.asp?
Avatar billede rbl Praktikant
09. oktober 2004 - 17:50 #100
jeg har sendt opdatermenu.asp til dig på mail
Avatar billede steen_hansen Forsker
09. oktober 2004 - 23:23 #101
rbl, den er hjemme! Lægger du et svar? :)

Jeg samler lige svaret sammen til evt. interesserede ...
Avatar billede steen_hansen Forsker
09. oktober 2004 - 23:31 #102
editmenu.asp

<!-- #include virtual="/borch/includes/data.asp" -->
<!-- #include virtual="/borch/includes/conn.asp" -->
<!-- #include virtual="/borch/includes/functions_.asp" -->

<html>

<!-- #include virtual="/borch/includes/header.asp" -->

<body>

<%
Dim menuID
menuID = Request.Querystring("menuID")

Set RS = Conn.Execute("SELECT * FROM menumain WHERE ID = " & menuID)
set submenu = conn.execute("select * from menusub where parent=" & menuID & " order by priorityID asc")
%>

<form name="opdatermenu" action="opdatermenu.asp" method="post">
<input type="hidden" name="ID" value="<%=RS("ID")%>">
<input type="hidden" name="ToDo" value="opdater">
<input type="text" name="menunavn" size="<%=Size%>" value="<%=Server.HTMLEncode(RS("mainmenu"))%>">
<input type="text" name="prioritet" value ="<%=RS("priorityID")%>">
<input type="submit" name="submit" value="Gem">
</form>

<%if request("status") = 1 then%>
  <font color="#FF0000">Menupunktet er blevet opdateret.</font>
<%end if%>
<br><br>

<%
i = 1
do while not submenu.eof
%>
  <form name="opdatermenu<%=i%>" action="opdatersub.asp" method="post">
  <input type="hidden" name="ID" value="<%=submenu("ID")%>">
  <input type="hidden" name="ToDo" value="opdater">
  <input type="hidden" name="parentID" value="<%=RS("ID")%>">
  <input type="text" name="menunavn" value="<%=submenu("submenu")%>">
  <input type="text" name="prioritet" value ="<%=submenu("priorityID")%>">
  <input type="submit" name="submit" value="Gem">
  </form>   
<%
  i = i+1
  submenu.movenext
loop
%>


Opret ny submenu:
<form name="opretsub" action="opdatersub.asp" method="post">
<input type="hidden" name="parentID" value="<%=RS("ID")%>">
<input type="text" name="menunavn">
<input type="text" name="prioritet"><br>
<input type="submit" name="submit" value="opret">
</form>
</body>
<% Conn.Close %>
</html>



view.asp

<!-- #include virtual="/borch/includes/data.asp" -->
<!-- #include virtual="/borch/includes/conn.asp" -->
<!-- #include virtual="/borch/includes/functions_.asp" -->

<html>

<!-- #include virtual="/borch/includes/header.asp" -->

<body>

<div align="center">
    <table border="0" cellpadding="0" cellspacing="0" id="maintable" class="text11">
        <tr>
            <td colspan="2">Banner</td>
        </tr>
        <tr>
            <td align="left" valign="top" id="menu">Menu</td>
            <td align="left" valign="top">
                <table border="0" cellpadding="0" cellspacing="0" id="maintable" class="text11">

                        <%
                        SET RS = Conn.Execute("SELECT * FROM menumain ORDER BY priorityID DESC")

                        Do While NOT RS.EOF
                        %>

                    <tr>
                        <td align="left" valign="top"><a href="/borch/admin/menus/editmenu.asp?menuID=<%=Server.URLEncode(RS("ID"))%>" onfocus="this.blur();"><%=Server.HTMLEncode(RS("mainmenu"))%></a></td>
                    </tr>

                        <%
                        RS.MoveNext
                        Loop

                        Conn.Close
                        %>
                </table>
            </td>
        </tr>
        <tr>
            <td colspan="2">Bund</td>
        </tr>
    </table>
</div>

</body>

</html>



opdatermenu.asp

<!-- #include virtual="/borch/includes/conn.asp" -->
<%
id = request("ID")
Navn = request("menunavn")
prioritet = request("prioritet")
ToDo = request("ToDo")

if ToDo = "opdater" then
    conn.execute("update menumain set mainmenu='" & navn & "', priorityID=" & prioritet & " where id=" & id)
    response.redirect("editmenu.asp?status=1&menuID=" & id)
else
    conn.execute("insert into menumain (mainmenu, priorityID) values('" & navn & "', " & prioritet & ")")
end if

%>



opdatersub.asp

<!-- #include virtual="/borch/includes/conn.asp" -->
<%
id = request("ID")
parent = request("parentID")
Navn = request("menunavn")
prioritet = request("prioritet")
ToDo = trim(request("ToDo"))

if ToDo = "opdater" then
    conn.execute("update menusub set submenu='" & navn & "', priorityID=" & prioritet & " where id=" & id)
    response.redirect("editmenu.asp?status=3&menuID=" & parent)
else
    conn.execute("insert into menusub (submenu, parent, priorityID) values('" & navn & "', " & parent & ", " & prioritet & ")")
    response.redirect("editmenu.asp?status=4&menuID=" & parent)
end if

%>



DATABASEN:

Tabel menumain

ID (Autonummerering, primary key)
mainmenu (tekst)
priorityID (tal)
url (tekst)


Tabel menusub

ID (Autonummerering, primary key)
parent (tal)
submenu (tekst)
priorityID (tal)
url (tekst)
Avatar billede rbl Praktikant
09. oktober 2004 - 23:52 #103
Det er godt, at det virker

Nu mangler du bare at finpudse udseendet :-)
Avatar billede steen_hansen Forsker
09. oktober 2004 - 23:53 #104
Takker MANGE gange. Bedste ven :o)
Avatar billede steen_hansen Forsker
09. oktober 2004 - 23:57 #105
Jeg er i gang med at formatere dokumenterne, det er fedt, og det virker bare :)
Avatar billede rbl Praktikant
10. oktober 2004 - 00:04 #106
Det er jo godt.

Fandt du ud af at lave et slet-funktion ?
Avatar billede steen_hansen Forsker
10. oktober 2004 - 00:06 #107
Nej, ikke endnu. Jeg vil lige prøve at sætte url ind i editmenu.asp, så man kan linke. Men jeg mener ikke det bliver det store problem. Ellers håber jeg du gider hjælpe lidt til? :)
Avatar billede rbl Praktikant
10. oktober 2004 - 00:11 #108
Jo, du siger bare til.
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