Avatar billede wandaxp Praktikant
27. august 2007 - 22:36 Der er 30 kommentarer og
1 løsning

Menu træ struktur til ASP med Database forbindelse?

Nogen der har en god kode til en menu?

Jeg har 3 database felter:
Kategori 1, Kategori2 og Kategori3
Kategori1 er selv hoved varen
Kategori2 er feks. fabrikat for den aktuelle vare
Kategori3 er feks, farverne på varen men det kan også blandes på andre måder det eneste der er unikt her er Kategori1 men i min database har alle varer disse 3 Kategorier (Dog kan der være varer som der kun udfyldes Kategori 1 og Kategori2 (Der kan være nogle under samme som også har KLategori3) for og i disse tilfælde skal den når der kun er udfyldt de første 2 komme frem når der klikkes på menupunkt 2 og samtidig skal menuen folde 3 niveau ud hvis der er nogen der passer til 3. niveau.
EG.:
Som titlen siger skal jeg have lavet en menu opbygget i træstruktur der heter menupunkterne fra en database. Menuen skal kunne udskrive underpunkter til menupunkterner altså noget lig med dette:

kategori1
    kategori2
    kategori2
kategori1
    kategori2
          kategori3
Avatar billede xicrow Nybegynder
29. august 2007 - 11:05 #1
Noget i stil med:

<%
' Tager alt fra tabellen "kategori_et"
set dbKategori_et = conn.execute("select * from kategori_et")
' Tjekker om tabellen er tom
if not (dbKategori_one.bof or dbKategori_one.eof) then
    ' Hvis den ikke er tom, loop igennem alt den finder
    do until dbKategori_one.eof
        ' Laver en <div> rundt om kategori navnet, så den kan styre ved hjælp af CSS
        response.write "<div class='kategori_to'>"
        response.write dbKategori_one("kategori_name")
        response.write "</div>"
       
        ' Tager alt fra tabellen "kategori_to", som hører til den nuværende record i tabellen "kategori_et"
        set dbKategori_to = conn.execute("select * from kategori_to where belongto_id=" &dbKategori_one("kategori_id")& "")
        ' Tjekker om tabellen er tom
        if not (dbKategori_to.bof or dbKategori_to.eof) then
            ' Hvis den ikke er tom, loop igennem alt den finder
            do until dbKategori_to.eof
                ' Laver en <div> rundt om kategori navnet, så den kan styre ved hjælp af CSS
                response.write "<div class='kategori_to'>"
                response.write dbKategori_to("kategori_name")
                response.write "</div>"
               
                ' Tager alt fra tabellen "kategori_tre", som hører til den nuværende record i tabellen "kategori_to"
                set dbKategori_tre = conn.execute("select * from kategori_to where belongto_id=" &dbKategori_to("kategori_id")& "")
                ' Tjekker om tabellen er tom
                if not (dbKategori_tre.bof or dbKategori_tre.eof) then
                    ' Hvis den ikke er tom, loop igennem alt den finder
                    do until dbKategori_tre.eof
                        ' Laver en <div> rundt om kategori navnet, så den kan styre ved hjælp af CSS
                        response.write "<div class='kategori_tre'>"
                        response.write dbKategori_tre("kategori_name")
                        response.write "</div>"
                       
                        dbKategori_tre.movenext
                    loop
                else
                    ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
                    response.write "Der er ingen records i Kategori 3"
                end if
               
                dbKategori_to.movenext
            loop
        else
            ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
            response.write "Der er ingen records i Kategori 2"
        end if
       
        dbKategori_one.movenext
    loop
else
    ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
    response.write "Der er ingen records i Kategori 1"
end if
%>

CSS'en kunne se således ud:

<style type="text/css">
div.kategori_et{}

div.kategori_to{
/* Laver et indryk i teksten på 10 px */
text-indent:10px;}

div.kategori_tre{
/* Laver et indryk i teksten på 20 px */
text-indent:20px;}
</style>
Avatar billede xicrow Nybegynder
29. august 2007 - 11:06 #2
Du skal selvfølgelig bare ændre i alle SQL-kommandoerne så de passer til den database du bruger

/xicrow
Avatar billede xicrow Nybegynder
29. august 2007 - 23:52 #3
skriv lige hvis du kan bruge det, eller hvis du har nogen problemer med det jeg har lavet til dig...

og ellers husk at lukke spørgsmålet

/xicrow
Avatar billede wandaxp Praktikant
30. august 2007 - 00:23 #4
Jeg har nu prøvet at tilpasse det til dette :

' Tager alt fra tabellen "kategori_et"
set dbKategori_et = con.execute("select DISTINCT Kategori1 from varer")
' Tjekker om tabellen er tom
if not (dbKategori_et.bof or dbKategori_et.eof) then
    ' Hvis den ikke er tom, loop igennem alt den finder
    do until dbKategori_et.eof
        ' Laver en <div> rundt om kategori navnet, så den kan styre ved hjælp af CSS
        response.write "<div class='kategori_to'>"
        response.write dbKategori_et("kategori1")
        response.write "</div>"
     
        ' Tager alt fra tabellen "kategori_to", som hører til den nuværende record i tabellen "kategori_et"
        set dbKategori_to = con.execute("select DISTINCT Kategori2 from varer where Kategori1=" & dbKategori_et("kategori1") & "")
        ' Tjekker om tabellen er tom
        if not (dbKategori_to.bof or dbKategori_to.eof) then
            ' Hvis den ikke er tom, loop igennem alt den finder
            do until dbKategori_to.eof
                ' Laver en <div> rundt om kategori navnet, så den kan styre ved hjælp af CSS
                response.write "<div class='kategori_to'>"
                response.write dbKategori_to("kategori2")
                response.write "</div>"

Men her går det galt når jeg komme til Kategori2 delen da jeg er nødt til at lave en destinct regel for ikke at få gengangere.

Alle oplysninger er i samme tabel
Kategori1, Kategori2, Kategori3, Varenr, Beskrivelse, Farve m.v.
Avatar billede xicrow Nybegynder
30. august 2007 - 10:20 #5
Prøv med det her: (husk der skal være '-tegn hvis katagori1 er et ord!)

set dbKategori_to = con.execute("select distinct Kategori2 from varer where Kategori1='" & dbKategori_et("kategori1") & "'")
Avatar billede xicrow Nybegynder
30. august 2007 - 10:22 #6
Forresten, hvis du får en fejl, så husk at skriv fejlmeddelelsen
Avatar billede xicrow Nybegynder
30. august 2007 - 10:49 #7
Hej Wandaxp.
Har lige prøvet at lave det om, efter hvad jeg har fået at vide fra dig. Det skulle gerne virke nu:

<%
set conn = Server.CreateObject("ADODB.Connection")
conn.Open " DRIVER=MySQL ODBC 3.51 Driver; SERVER=localhost; UID=root; PWD=1234; DATABASE=test;"


' Funktion til at erstatte danske bogstaver (æ,ø,å), for at sikre at de ser rigtige ud i browseren
function replace_danish_letters(word)
    if instr(lcase(word), "æ") or instr(lcase(word), "ø") or instr(lcase(word), "å") then
        word = replace(replace(replace(word, "æ", "&aelig;"), "ø", "&oslash;"), "å", "&aring;")
        word = replace(replace(replace(word, "Æ", "&AElig;"), "Ø", "&Oslash;"), "Å", "&Aring;")
    end if
   
    replace_danish_letters = word
end function


' Tager alt fra tabellen "kategori_et"
set dbKategori_et = conn.execute("select distinct kategori1 from varer order by kategori1 asc")
' Tjekker om tabellen er tom
if not (dbKategori_et.bof or dbKategori_et.eof) then
    ' Hvis den ikke er tom, loop igennem alt den finder
    do until dbKategori_et.eof
        ' Laver en <div> rundt om kategori navnet, så den kan styre ved hjælp af CSS
        response.write "<div class='kategori_et'>"
        response.write replace_danish_letters(dbKategori_et("kategori1"))
        response.write "</div>"
       
        ' Tager alt fra tabellen "kategori_to", som hører til den nuværende record i tabellen "kategori_et"
        set dbKategori_to = conn.execute("select distinct kategori2 from varer where kategori1='" &dbKategori_et("kategori1")& "' order by kategori2 asc")
        ' Tjekker om tabellen er tom
        if not (dbKategori_to.bof or dbKategori_to.eof) then
            ' Hvis den ikke er tom, loop igennem alt den finder
            do until dbKategori_to.eof
                ' Laver en <div> rundt om kategori navnet, så den kan styre ved hjælp af CSS
                response.write "<div class='kategori_to'>"
                response.write replace_danish_letters(dbKategori_to("kategori2"))
                response.write "</div>"
               
                ' Tager alt fra tabellen "kategori_tre", som hører til den nuværende record i tabellen "kategori_to"
                set dbKategori_tre = conn.execute("select distinct kategori3 from varer where kategori2='" &dbKategori_to("kategori2")& "' order by kategori3 asc")
                ' Tjekker om tabellen er tom
                if not (dbKategori_tre.bof or dbKategori_tre.eof) then
                    ' Hvis den ikke er tom, loop igennem alt den finder
                    do until dbKategori_tre.eof
                        ' Laver en <div> rundt om kategori navnet, så den kan styre ved hjælp af CSS
                        response.write "<div class='kategori_tre'>"
                        response.write replace_danish_letters(dbKategori_tre("kategori3"))
                        response.write "</div>"
                       
                        dbKategori_tre.movenext
                    loop
                else
                    ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
                    response.write "Der er ingen records i Kategori 3"
                end if
               
                dbKategori_to.movenext
            loop
        else
            ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
            response.write "Der er ingen records i Kategori 2"
        end if
       
        dbKategori_et.movenext
    loop
else
    ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
    response.write "Der er ingen records i Kategori 1"
end if


conn.close
set conn = nothing
%>

Og selvfølgelig CSS'en:

<style type="text/css">
div.kategori_et{}

div.kategori_to{
/* Laver et indryk i teksten på 10 px */
text-indent:15px;}

div.kategori_tre{
/* Laver et indryk i teksten på 20 px */
text-indent:30px;}
</style>


/xicrow
Avatar billede wandaxp Praktikant
01. september 2007 - 00:02 #8
Dette er p.t. pointene værd, me kan man lave denne menu så den kun popper undermenuen ud når man trkker på den ovenstående menu dvs. Alle fra Kategori 1 vises hele tiden.
Hvis man trykker på en kategori1 punkt så viser den så stadig alle kategori1 punkter, men under den man har trykket på viser den også alle kategori 2 punkter som passer dertil og det samme igen for menu 3 og hvis man trykker på en anden hovedmenu klappes den forrige sammen og den nye foldes ud?
Jeg tilføjer gerne 60 point ekstra for denne til tilføjelse :-)
Avatar billede xicrow Nybegynder
01. september 2007 - 21:23 #9
Ja det kan man godt lave...

Men du må lige give mig lidt tid til at lave det så, for skal lige have flettet noget JavaScript ind i, til at vise / skjule det forskellige menu-niveauer.

Jeg kan nok have det klar om et par dage, ca mandag.

/xicrow
Avatar billede wandaxp Praktikant
02. september 2007 - 10:31 #10
Det er bare helt i orden :-)
Avatar billede xicrow Nybegynder
03. september 2007 - 12:44 #11
Hey wandaxp.

Så er jeg blevet færdig. Her har du det færdige resultat:

JavaScript til at vise og skjule kategori-niveauerne:
<script type="text/javascript" language="javascript">
function show_element(element_id)
    {
    // Hide the 'Show' link
    document.getElementById(element_id + "_show").style.visibility="hidden";
    document.getElementById(element_id + "_show").style.display="none";
   
    // Show the 'Hide' link
    document.getElementById(element_id + "_hide").style.visibility="visible";
    document.getElementById(element_id + "_hide").style.display="block";
   
    // Show the DIV box
    document.getElementById(element_id).style.visibility="visible";
    document.getElementById(element_id).style.display="block";
    }

function hide_element(element_id)
    {
    // Hide the 'Hide' link
    document.getElementById(element_id + "_hide").style.visibility="hidden";
    document.getElementById(element_id + "_hide").style.display="none";
   
    // Show the 'Show' link
    document.getElementById(element_id + "_show").style.visibility="visible";
    document.getElementById(element_id + "_show").style.display="block";
   
    // Hide the DIV box
    document.getElementById(element_id).style.visibility="hidden";
    document.getElementById(element_id).style.display="none";
    }
</script>

CSS'en:
<style type="text/css">
body{
/* Bare lidt stil til at pynte på tingende */
font:normal 12px Verdana, Arial, Helvetica, sans-serif;}

div.kategori_et{}
div.kategori_to{
/* Laver et indryk på 10 px */
position:relative; left:10px;}
div.kategori_tre{
/* Laver et indryk på 20 px */
position:relative; left:25px;}

/* Alle 'vis'-links */
table.show{
visibility:visible; display:block;
cursor:default;}
/* Alle 'skjul'-links */
table.hide{
visibility:hidden; display:none;
cursor:default;}

/* DIV-boksen rundt om alle kategorier på niveau 1 */
div.cat_1{
visibility:hidden; display:none;}
/* DIV-boksen rundt om alle kategorier på niveau 2 */
div.cat_2{
visibility:hidden; display:none;}
</style>

Og koden der får det hele til at funke:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.Open " DRIVER=MySQL ODBC 3.51 Driver; SERVER=localhost; UID=root; PWD=1234; DATABASE=test;"


' Funktion til at erstatte danske bogstaver (æ,ø,å), for at sikre at de ser rigtige ud i browseren
function replace_danish_letters(word)
    if instr(lcase(word), "æ") or instr(lcase(word), "ø") or instr(lcase(word), "å") then
        word = replace(replace(replace(word, "æ", "&aelig;"), "ø", "&oslash;"), "å", "&aring;")
        word = replace(replace(replace(word, "Æ", "&AElig;"), "Ø", "&Oslash;"), "Å", "&Aring;")
    end if
   
    replace_danish_letters = word
end function


' Tager alt fra tabellen "kategori_et"
set dbKategori_et = conn.execute("select distinct kategori1 from varer order by kategori1 asc")
' Tjekker om tabellen er tom
if not (dbKategori_et.bof or dbKategori_et.eof) then
    ' Hvis den ikke er tom, loop igennem alt den finder
    do until dbKategori_et.eof
        ' Laver en <div> rundt om kategori navnet, så den kan styres ved hjælp af CSS
        response.write "<div class='kategori_et'>"
        %>
        <!-- Laver links til at vise og skjule kategorien -->
        <table border="0" cellspacing="0" cellpadding="0" id="1.<%=dbKategori_et("kategori1")%>_show" class="show">
        <tr>
            <td width="15">
            <a
            onclick="show_element('1.<%=dbKategori_et("kategori1")%>');
            <% 'Looper gennem alle andre kategorier på niveau 1, og skjuler dem
            set dbKategori_et_cats = conn.execute("select distinct kategori1 from varer")
           
            if not (dbKategori_et_cats.bof or dbKategori_et_cats.eof) then
                do until dbKategori_et_cats.eof
                    if dbKategori_et_cats("kategori1") <> dbKategori_et("kategori1") then
                        response.write "hide_element('1." &dbKategori_et_cats("kategori1")& "');"
                    end if
                   
                    set dbKategori_et_elements = conn.execute("select * from varer where kategori1='" &dbKategori_et_cats("kategori1")& "'")
                   
                    'Skjuler alle åbner kategorier på niveau 2
                    if not (dbKategori_et_elements.bof or dbKategori_et_elements.eof) then
                        do until dbKategori_et_elements.eof
                            response.write "hide_element('2." &dbKategori_et_elements("kategori2")& "');"
                           
                            dbKategori_et_elements.movenext
                        loop
                    end if
                   
                    dbKategori_et_cats.movenext
                loop
            end if
            %>
            ">
            <!-- Tegn der bliver vist når kategorien er lukket -->
            <strong>+</strong>
            </a>
            </td>
           
            <td>
            <a href="?cat_1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>">
            <!-- Tekst der bliver vist når kategorien er lukket -->
            <%=replace_danish_letters(dbKategori_et("kategori1"))%>
            </a>
            </td>
        </tr>
        </table>
       
        <table border="0" cellspacing="0" cellpadding="0" id="1.<%=dbKategori_et("kategori1")%>_hide" class="hide">
        <tr>
            <td width="15">
            <a
            onclick="hide_element('1.<%=dbKategori_et("kategori1")%>');
            <% 'Skjuler alle kategorier
            set dbKategori_et_elements = conn.execute("select * from varer where kategori1='" &dbKategori_et("kategori1")& "'")
           
            if not (dbKategori_et_elements.bof or dbKategori_et_elements.eof) then
                do until dbKategori_et_elements.eof
                    response.write "hide_element('2." &dbKategori_et_elements("kategori2")& "');"
                   
                    dbKategori_et_elements.movenext
                loop
            end if
            %>
            ">
            <!-- Tegn der bliver vist når kategorien er åben -->
            <strong>-</strong>
            </a>
            </td>
           
            <td>
            <a href="?cat_1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>">
            <!-- Tekst der bliver vist når kategorien er åben -->
            <%=replace_danish_letters(dbKategori_et("kategori1"))%>
            </a>
            </td>
        </tr>
        </table>
        <%
        response.write "</div>"
       
        ' Smider en DIV rundt om alle kategorier på niveau 1
        response.write "<div id='1." &dbKategori_et("kategori1")& "' class='cat_1'>"
        ' Tager alt fra tabellen "kategori_to", som hører til den nuværende record i tabellen "kategori_et"
        set dbKategori_to = conn.execute("select distinct kategori2 from varer where kategori1='" &dbKategori_et("kategori1")& "' order by kategori2 asc")
        ' Tjekker om tabellen er tom
        if not (dbKategori_to.bof or dbKategori_to.eof) then
            ' Hvis den ikke er tom, loop igennem alt den finder
            do until dbKategori_to.eof
                ' Laver en <div> rundt om kategori navnet, så den kan styres ved hjælp af CSS
                response.write "<div class='kategori_to'>"
                %>
                <table border="0" cellspacing="0" cellpadding="0" id="2.<%=dbKategori_to("kategori2")%>_show" class="show">
                <tr>
                    <td width="15">
                    <a
                    onclick="show_element('2.<%=dbKategori_to("kategori2")%>');
                    <%
                    set dbKategori_to_cats = conn.execute("select distinct kategori2 from varer where kategori1='" &dbKategori_et("kategori1")& "'")
                   
                    if not (dbKategori_to_cats.bof or dbKategori_to_cats.eof) then
                        do until dbKategori_to_cats.eof
                            if dbKategori_to_cats("kategori2") <> dbKategori_to("kategori2") then
                                response.write "hide_element('2." &dbKategori_to_cats("kategori2")& "');"
                            end if
                           
                            dbKategori_to_cats.movenext
                        loop
                    end if
                    %>
                    ">
                    <!-- Tegn der bliver vist når kategorien er lukket -->
                    <strong>+</strong>
                    </a>
                    </td>
                   
                    <td>
                    <a href="?cat_1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>&cat_2=<%=replace_danish_letters(dbKategori_to("kategori2"))%>">
                    <!-- Tekst der bliver vist når kategorien er lukket -->
                    <%=replace_danish_letters(dbKategori_to("kategori2"))%>
                    </a>
                    </td>
                </tr>
                </table>
               
                <table border="0" cellspacing="0" cellpadding="0" id="2.<%=dbKategori_to("kategori2")%>_hide" class="hide">
                <tr>
                    <td width="15">
                    <a onclick="hide_element('2.<%=dbKategori_to("kategori2")%>');">
                    <!-- Tegn der bliver vist når kategorien er åben -->
                    <strong>-</strong>
                    </a>
                    </td>
                   
                    <td>
                    <a href="?cat_1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>&cat_2=<%=replace_danish_letters(dbKategori_to("kategori2"))%>">
                    <!-- Tekst der bliver vist når kategorien er åben -->
                    <%=replace_danish_letters(dbKategori_to("kategori2"))%>
                    </a>
                    </td>
                </tr>
                </table>
                <%
                response.write "</div>"
               
                ' Smider en DIV rundt om alle kategorier på niveau 2
                response.write "<div id='2." &dbKategori_to("kategori2")& "' class='cat_2'>"
                ' Tager alt fra tabellen "kategori_tre", som hører til den nuværende record i tabellen "kategori_to"
                set dbKategori_tre = conn.execute("select distinct kategori3 from varer where kategori2='" &dbKategori_to("kategori2")& "' order by kategori3 asc")
                ' Tjekker om tabellen er tom
                if not (dbKategori_tre.bof or dbKategori_tre.eof) then
                    ' Hvis den ikke er tom, loop igennem alt den finder
                    do until dbKategori_tre.eof
                        ' Laver en <div> rundt om kategori navnet, så den kan styres ved hjælp af CSS
                        response.write "<div class='kategori_tre'>"
                        response.write "<a href='?cat_1=" &replace_danish_letters(dbKategori_et("kategori1"))& "&cat_2=" &replace_danish_letters(dbKategori_to("kategori2"))& "&cat_3=" &replace_danish_letters(dbKategori_tre("kategori3"))& "'>"
                        response.write replace_danish_letters(dbKategori_tre("kategori3"))
                        response.write "</a>"
                        response.write "</div>"
                       
                        dbKategori_tre.movenext
                    loop
                else
                    ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
                    response.write "Der er ingen records i Kategori 3"
                end if
               
                response.write "</div>"
               
                dbKategori_to.movenext
            loop
        else
            ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
            response.write "Der er ingen records i Kategori 2"
        end if
       
        response.write "</div>"
       
        dbKategori_et.movenext
    loop
else
    ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
    response.write "Der er ingen records i Kategori 1"
end if


conn.close
set conn = nothing
%>
Avatar billede xicrow Nybegynder
03. september 2007 - 12:45 #12
Og så var der lige et svar til dig ;)

/xicrow
Avatar billede wandaxp Praktikant
03. september 2007 - 22:47 #13
Kanon menu system :-)
Avatar billede wandaxp Praktikant
03. september 2007 - 22:47 #14
1000 TAK :-)
Avatar billede xicrow Nybegynder
03. september 2007 - 23:11 #15
Var så lidt, er altid glad for at kunne hjælpe.

/xicrow
Avatar billede wandaxp Praktikant
10. september 2007 - 22:59 #16
hmmm jeg har fundet et lidt besynderligt problem med menuen, det er kun de 2 øvereste menu punkter den klapper sammen hver gang, men når man har åbnet en af de underliggende menuer så klapper de ikke sammen når man klikker på en af de andre helelr ikke en af de 2 øverste, men de 2 øverste klappes sammmen uanset hvilken anden menu punkt man trykker på men alle under bliver stående som de sidst har været sat til?
Avatar billede wandaxp Praktikant
25. oktober 2007 - 19:11 #17
Det problem har jeg dog løst nu, det var en taste fejl fra min side, mne nu har jeg koblet den på en database med 4000 varenumrer hvor den så gennerer menuen udfra, mne den er utrolig langsom kan en se hvorfor?
Hele koden er her:

<link rel="stylesheet" type="text/css" href="css/menu.css" />
<html>
<!--#include file="ssi/45tn73gf4347y.asp"-->
<head>
<script type="text/javascript" language="javascript">
function show_element(element_id)
    {
    // Hide the 'Show' link
    document.getElementById(element_id + "_show").style.visibility="hidden";
    document.getElementById(element_id + "_show").style.display="none";
 
    // Show the 'Hide' link
    document.getElementById(element_id + "_hide").style.visibility="visible";
    document.getElementById(element_id + "_hide").style.display="block";
 
    // Show the DIV box
    document.getElementById(element_id).style.visibility="visible";
    document.getElementById(element_id).style.display="block";
    }

function hide_element(element_id)
    {
    // Hide the 'Hide' link
    document.getElementById(element_id + "_hide").style.visibility="hidden";
    document.getElementById(element_id + "_hide").style.display="none";
 
    // Show the 'Show' link
    document.getElementById(element_id + "_show").style.visibility="visible";
    document.getElementById(element_id + "_show").style.display="block";
 
    // Hide the DIV box
    document.getElementById(element_id).style.visibility="hidden";
    document.getElementById(element_id).style.display="none";
    }
</script>
</head>
<body bgcolor="#004000" backgroundcolor="#004000" bgproperties="fixed">
<base target="hoved">
<%
Dim iChoice, OkChoice, dbKategori_et, dbKategori_to, dbKategori_tre
' Læser brugerens valg
iChoice = Request.QueryString("valg")
' Udfører brugerens valg...
%>

<table width="145" border="0" align="left" cellpadding="0" cellspacing="0">
    <tr>
        <td background="baggrund/top.png" height="66" valign="top"></td>
    </tr>
    <tr>
        <td background="baggrund/midt.png" height="*" valign="top">
<table width="145" height="100%" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td width="11" align="left"></td>
        <td width="125" valign="top"><font color="#ffffff">
       
<a href="hoved.asp" target="HOVED" title="Velkomst siden" onmouseover="window.status='Velkomst siden';return true">Hovedside</a><br><br>

<%

' Funktion til at erstatte danske bogstaver (æ,ø,å), for at sikre at de ser rigtige ud i browseren
function replace_danish_letters(word)
    if instr(lcase(word), "æ") or instr(lcase(word), "ø") or instr(lcase(word), "å") then
        word = replace(replace(replace(word, "æ", "&aelig;"), "ø", "&oslash;"), "å", "&aring;")
        word = replace(replace(replace(word, "Æ", "&AElig;"), "Ø", "&Oslash;"), "Å", "&Aring;")
    end if
 
    replace_danish_letters = word
end function


' Tager alt fra tabellen "kategori_et"
set dbKategori_et = con.execute("select distinct kategori1 from varer where Kategori1<>NULL order by kategori1 asc")
' Tjekker om tabellen er tom
if not (dbKategori_et.bof or dbKategori_et.eof) then
    ' Hvis den ikke er tom, loop igennem alt den finder
    do until dbKategori_et.eof
        ' Laver en <div> rundt om kategori navnet, så den kan styres ved hjælp af CSS
        response.write "<div class='kategori_et'>"
        %>
        <!-- Laver links til at vise og skjule kategorien -->
        <table border="0" cellspacing="0" cellpadding="0" id="1.<%=dbKategori_et("kategori1")%>_show" class="show">
        <tr>
            <td width="15">
            <a
            onclick="show_element('1.<%=dbKategori_et("kategori1")%>');
            <% 'Looper gennem alle andre kategorier på niveau 1, og skjuler dem
            set dbKategori_et_cats = con.execute("select distinct kategori1 from varer where Kategori1<>NULL")
         
            if not (dbKategori_et_cats.bof or dbKategori_et_cats.eof) then
                do until dbKategori_et_cats.eof
                    if dbKategori_et_cats("kategori1") <> dbKategori_et("kategori1") then
                        response.write "hide_element('1." &dbKategori_et_cats("kategori1")& "');"
                    end if
                 
                    set dbKategori_et_elements = con.execute("select * from varer where kategori1='" &dbKategori_et_cats("kategori1")& "'")
                 
                    'Skjuler alle åbner kategorier på niveau 2
                    if not (dbKategori_et_elements.bof or dbKategori_et_elements.eof) then
                        do until dbKategori_et_elements.eof
                            response.write "hide_element('2." &dbKategori_et_elements("kategori2")& "');"
                         
                            dbKategori_et_elements.movenext
                        loop
                    end if
                 
                    dbKategori_et_cats.movenext
                loop
            end if
            %>
            ">
            <!-- Tegn der bliver vist når kategorien er lukket -->
            <img src=billeder/plus.png height=13 width=13>
            </a>
            </td>
         
            <td>
            <a href="vare/vare.asp?Kategori1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>&Kategori2=NA&Kategori3=NA&Tilbud=NA&Nyhed=NA&SOEG=NA" target="HOVED" title="<%=replace_danish_letters(dbKategori_et("kategori1"))%>">
            <!-- Tekst der bliver vist når kategorien er lukket -->
            <%=replace_danish_letters(dbKategori_et("kategori1"))%>
            </a>
            </td>
        </tr>
        </table>
     
        <table border="0" cellspacing="0" cellpadding="0" id="1.<%=dbKategori_et("kategori1")%>_hide" class="hide">
        <tr>
            <td width="15">
            <a
            onclick="hide_element('1.<%=dbKategori_et("kategori1")%>');
            <% 'Skjuler alle kategorier
            set dbKategori_et_elements = con.execute("select * from varer where kategori1='" &dbKategori_et("kategori1")& "'")
         
            if not (dbKategori_et_elements.bof or dbKategori_et_elements.eof) then
                do until dbKategori_et_elements.eof
                    response.write "hide_element('2." &dbKategori_et_elements("kategori2")& "');"
                 
                    dbKategori_et_elements.movenext
                loop
            end if
            %>
            ">
            <!-- Tegn der bliver vist når kategorien er åben -->
            <img src=billeder/minus.png height=13 width=13>
            </a>
            </td>
         
            <td>
            <a href="vare/vare.asp?Kategori1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>&Kategori2=NA&Kategori3=NA&Tilbud=NA&Nyhed=NA&SOEG=NA" target="HOVED" title="<%=replace_danish_letters(dbKategori_et("kategori1"))%>">
            <!-- Tekst der bliver vist når kategorien er åben -->
            <%=replace_danish_letters(dbKategori_et("kategori1"))%>
            </a>
            </td>
        </tr>
        </table>
        <%
        response.write "</div>"
     
        ' Smider en DIV rundt om alle kategorier på niveau 1
        response.write "<div id='1." &dbKategori_et("kategori1")& "' class='cat_1'>"
        ' Tager alt fra tabellen "kategori_to", som hører til den nuværende record i tabellen "kategori_et"
        set dbKategori_to = con.execute("select distinct kategori2 from varer where kategori1='" &dbKategori_et("kategori1")& "' order by kategori2 asc")
        ' Tjekker om tabellen er tom
        if not (dbKategori_to.bof or dbKategori_to.eof) then
            ' Hvis den ikke er tom, loop igennem alt den finder
            do until dbKategori_to.eof
                ' Laver en <div> rundt om kategori navnet, så den kan styres ved hjælp af CSS
                response.write "<div class='kategori_to'>"
                %>
                <table border="0" cellspacing="0" cellpadding="0" id="2.<%=dbKategori_to("kategori2")%>_show" class="show">
                <tr>
                    <td width="15">
                    <a
                    onclick="show_element('2.<%=dbKategori_to("kategori2")%>');
                    <%
                    set dbKategori_to_cats = con.execute("select distinct kategori2 from varer where kategori1='" &dbKategori_et("kategori1")& "'")
                 
                    if not (dbKategori_to_cats.bof or dbKategori_to_cats.eof) then
                        do until dbKategori_to_cats.eof
                            if dbKategori_to_cats("kategori2") <> dbKategori_to("kategori2") then
                                response.write "hide_element('2." &dbKategori_to_cats("kategori2")& "');"
                            end if
                         
                            dbKategori_to_cats.movenext
                        loop
                    end if
                    %>
                    ">
                    <!-- Tegn der bliver vist når kategorien er lukket -->
                    <%
                    set dbKategori_to_tom = con.execute("select distinct kategori3 from varer where (kategori1='" & dbKategori_et("kategori1") & "' AND kategori2='" &dbKategori_to("kategori2")& "' AND kategori3<> NULL)")
                    if not (dbKategori_to_tom.bof or dbKategori_to_tom.eof) then
                    %>
                    <img src=billeder/plus.png height=13 width=13>
                    <%end if%>
                    </a>
                    </td>
                 
                    <td>
                    <a href="vare/vare.asp?Kategori1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>&Kategori2=<%=replace_danish_letters(dbKategori_to("kategori2"))%>&Kategori3=NA&Tilbud=NA&Nyhed=NA&SOEG=NA" target="HOVED" title="<%=replace_danish_letters(dbKategori_et("kategori1") & " - " & dbKategori_to("kategori2"))%>">
                    <!-- Tekst der bliver vist når kategorien er lukket -->
                    <%=replace_danish_letters(dbKategori_to("kategori2"))%>
                    </a>
                    </td>
                </tr>
                </table>
             
                <table border="0" cellspacing="0" cellpadding="0" id="2.<%=dbKategori_to("kategori2")%>_hide" class="hide">
                <tr>
                    <td width="15">
                    <a onclick="hide_element('2.<%=dbKategori_to("kategori2")%>');">
                    <!-- Tegn der bliver vist når kategorien er åben -->
                    <%
                    set dbKategori_to_tom = con.execute("select distinct kategori3 from varer where (kategori1='" & dbKategori_et("kategori1") & "' AND kategori2='" &dbKategori_to("kategori2")& "' AND kategori3<> NULL)")
                    if not (dbKategori_to_tom.bof or dbKategori_to_tom.eof) then
                    %>
                    <img src=billeder/minus.png height=13 width=13>
                    <%end if%>
                    </a>

                    </td>
                 
                    <td>
                    <a href="vare/vare.asp?Kategori1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>&Kategori2=<%=replace_danish_letters(dbKategori_to("kategori2"))%>&Kategori3=NA&Tilbud=NA&Nyhed=NA&SOEG=NA" target="HOVED" title="<%=replace_danish_letters(dbKategori_et("kategori1") & " - " & dbKategori_to("kategori2"))%>">
                    <!-- Tekst der bliver vist når kategorien er åben -->
                    <%=replace_danish_letters(dbKategori_to("kategori2"))%>
                    </a>
                    </td>
                </tr>
                </table>
                <%
                response.write "</div>"
             
                ' Smider en DIV rundt om alle kategorier på niveau 2
                response.write "<div id='2." &dbKategori_to("kategori2")& "' class='cat_2'>"
                ' Tager alt fra tabellen "kategori_tre", som hører til den nuværende record i tabellen "kategori_to"
                set dbKategori_tre = con.execute("select distinct kategori3 from varer where (kategori2='" &dbKategori_to("kategori2")& "' AND kategori3<> NULL) order by kategori3 asc")
                ' Tjekker om tabellen er tom
                if not (dbKategori_tre.bof or dbKategori_tre.eof) then
                    ' Hvis den ikke er tom, loop igennem alt den finder
                    do until dbKategori_tre.eof
                        ' Laver en <div> rundt om kategori navnet, så den kan styres ved hjælp af CSS
                        response.write "<div class='kategori_tre'>"

%>
                    <a href="vare/vare.asp?Kategori1=<%=replace_danish_letters(dbKategori_et("kategori1"))%>&Kategori2=<%=replace_danish_letters(dbKategori_to("kategori2"))%>&Kategori3=<%=replace_danish_letters(dbKategori_tre("kategori3"))%>&Tilbud=NA&Nyhed=NA&SOEG=NA" target="HOVED" title="<%=replace_danish_letters(dbKategori_et("kategori1") & " - " & dbKategori_to("kategori2") & " - " & dbKategori_tre("kategori3"))%>"><%=replace_danish_letters(dbKategori_tre("kategori3"))%></a>

<%                      response.write "</div>"
                     
                        dbKategori_tre.movenext
                    loop
                else
                    ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
                end if
                response.write "</div>"
                dbKategori_to.movenext
            loop
        else
            ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
        end if
        response.write "</div>"
        dbKategori_et.movenext
    loop
else
    ' Hvis den er tom, skriv en besked (kan selvfølgelig fjernes)
end if


con.close
set con = nothing
%>

        </font></td>
        <td width="9" align="right"></td>
    </tr>
</table>

        </td>
    </tr>
    <tr>
        <td background="baggrund/bund.png" height="61" valign="bottom"></td>
    </tr>
</table>
</body>
</html>
Avatar billede wandaxp Praktikant
03. november 2007 - 23:17 #18
Hej igen xicrow

Kan vi finde ud af med lidt mere hjælp til menuen, jeg vil gerne betale dig for det hvis det kan hjælpe :-)

Mit problem er at det er at den bruger knap 10 sek, før den viser min side fordi den skal oprette menuen der er 3800 vare poster den skal igennem, men med alle de loops den har tager det som om der er mange milioner af poster, så kan man gøre den hurtigere?
Jeg kan poste den heller eller maile den til dig hvis jeg kan få dig til at hjælpe?

Jeg vil være meget taknemmelig for hjælp da jeg nu har brugt utallige dage på at forstå denne kode og har desværre svært ved at overskue den korrekt?

Hvis du er interesseret kan jeg sende det til dig og så kan du komme med en pris så må vi finde ud af det :-)

På forhånd 1000 tak...
Avatar billede xicrow Nybegynder
04. november 2007 - 15:07 #19
Jeg kan da prøve at kigge på det, men tror ikke jeg har koden til det længere, så den må du gerne sende, også meget gerne databasen, er sq ikke meget for at sidde og oprette et par tusind varer for at tjekke ;)

Bare pak det hele til en .zip / .rar fil, og send det til xicrow[snafel-A]hotmail.com

/xicrow
Avatar billede xicrow Nybegynder
05. november 2007 - 09:29 #20
Hey WandaXP.

Har fået din mail, og filerne... Kan se du bruger en Access-Database, har du overvejet at skifte til MySQL-database i stedet for ? Det ville også øge hastigheden på menuen, da MySQL er hurtigere og mere sikker end MDB.

/xicrow
Avatar billede wandaxp Praktikant
05. november 2007 - 09:44 #21
Ja jeg har overvejet det, og er ved at lærer om hvordan jeg konverter og bruger den i min test system, så på sigt, så ændre jeg det, men skal lige fidne ud af at bruge MySQL først :-)
Avatar billede wandaxp Praktikant
05. november 2007 - 09:57 #22
Hvor meget forskel gør det da at den laves over i MySQL?
Avatar billede xicrow Nybegynder
05. november 2007 - 09:57 #23
Ok, det lyder fornuftigt ;D

Kigger på koden engang, så skriver jeg lige tilbage til dig

/xicrow
Avatar billede xicrow Nybegynder
05. november 2007 - 23:26 #24
Forskellen er at MySQL-databaser er meget mere sikre end MDB, da MySQL databaser, som regl ligger på en server for sig selv, hvilket gør det sværere at få adgang til den.

Med hensyn til hastigheden er der ikke den store forskel på MySQL og MDB, så længe det er relativt små mængder data vi snakker om, men hvis der begynder at komme mange felter i databasen, så kan man godt mærke en forskel på MySQL og MDB databaser.

/xicrow
Avatar billede wandaxp Praktikant
06. november 2007 - 09:16 #25
Ja ok, men jeg har det også i tankerne, men det bliver så heller ikke noget større at ændre det, det er kun forbindelsen der skal ændres så kører alt igen, det er bare lige med at komme nok ind i MySQL men det kommer jeg nok inden så længe :-)

P.S. Hvis ikke det kan lade sig gører at ændre kodningen så den bliver hurtigere og undgår alle de loops, så man jeg lave en særskilt tabel med menu strukturen i, mne det ville være rarest hvis det ikke er nødvendigt...
Avatar billede wandaxp Praktikant
09. november 2007 - 10:15 #26
Kan man gøre noget ved det eller skal der laves alle tabeller til menuerne også for at kunne få en ok hastighed?
Avatar billede xicrow Nybegynder
19. november 2007 - 23:36 #27
Hey Wandaxp.
Har desværre ikke haft tid til at kigge på systemet endnu, men satser på at ordne det i morgen...

Men jeg har tænkt mig at optimere koderne vedrørende database-udtrækkene, da det er det der gør siden langsom.

Men syntes at du burde overveje at skifte til MySQL database i stedet for, og der er egentligt heller ikke den store forskel mht til kode delen.

/xicrow
Avatar billede wandaxp Praktikant
20. november 2007 - 11:13 #28
Hej Xicrow

Ja jeg har undersøgt lidt i MySQL nu, men er ikke lige helt sikker nok i sammenhængen til at skifte, men det bliver helt klart løsningen over vinteren at få det flyttet over og komme ordentligt ind i MySQL delen :-)
Avatar billede wandaxp Praktikant
22. november 2007 - 23:19 #29
Bare giv svaret, så er sagen afsluttet...

SUPERB.... :-)
Avatar billede xicrow Nybegynder
22. november 2007 - 23:22 #30
Har allerede givet et svar længere oppe, som du har accepteret ;)

Ellers mange tak...
Avatar billede wandaxp Praktikant
22. november 2007 - 23:47 #31
ehhh ups :-)
Nå men ok, husk bare at sige til hvis jeg kan hjælpe...
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