27. august 2007 - 22:36Der 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:
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
<% ' 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>
' 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.
' 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, "æ", "æ"), "ø", "ø"), "å", "å") word = replace(replace(replace(word, "Æ", "Æ"), "Ø", "Ø"), "Å", "Å") 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>
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 :-)
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.
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, "æ", "æ"), "ø", "ø"), "å", "å") word = replace(replace(replace(word, "Æ", "Æ"), "Ø", "Ø"), "Å", "Å") 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
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?
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";
' 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, "æ", "æ"), "ø", "ø"), "å", "å") word = replace(replace(replace(word, "Æ", "Æ"), "Ø", "Ø"), "Å", "Å") 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'>"
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
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 :-)
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
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.
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 :-)
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.
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...
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 :-)
ehhh ups :-) Nå men ok, husk bare at sige til hvis jeg kan hjælpe...
Synes godt om
Ny brugerNybegynder
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.