30. oktober 2000 - 08:08Der er
52 kommentarer og 1 løsning
Prøver igen
Hej med-Eskperter !
Jeg er ved at lave en menu, baseret på udtræk fra en Database...
flg. kode virker fint !
<% Set myConn = Server.CreateObject(\"ADODB.Connection\") myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\"& Server.MapPath(\"varer.mdb\") SQL = \"SELECT * FROM tbl_Cat WHERE maincat=TRUE\" Set rs = myConn.Execute(SQL)
IF request(\"menuID\") = \"\" THEN response.write \"<table border=\'0\' width=\'175\' cellpadding=\'0\' cellspacing=\'2\'>\" Do while NOT rs.EOF response.write \"<tr>\" response.write vbcrlf&\"<td bgcolor=\'#FFFFFF\'><a href=\'menu.asp?menuID=\"& rs(\"Menu_ID\") &\"\'>\"& rs(\"Cat_Navn\") &\"</a></td>\" & vbcrlf response.write \"</tr>\" RS.MoveNext LOOP response.write \"</table>\" myConn.Close Set myConn = Nothing END IF %>
Men den trækker jo kun hovedkategorierne ud...
Den skal laves således, at når man klikker på en af hovedkategorierne, folder menuen sig ud...Og ved klik på selvsamme kategori folder menuen sig ind !
Har overvejet noget med sessions...men ville da lige høre nogen gode råd herfra Eksperten !
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
du kan vel lave en form for hver menupunkt med en value= \" menupunkt\" og så kalde en fil, der trækker underpunkterne ud og skriver dem på skærmen?? en fil pr. menupunkt med underpunkter.mange krumspring, men det skulle virke.
*s* ikke engang 200 point kan få mig til at starte InterDev nu ... når jeg lægger mig til at sove vågner jeg sikkert ikke før kvart over onsdag til halv torsdag .. ;)
Noget i denne stil. Underpukkterne er i en tabel, kategorierne (hovedpunkterne) i en anden, og der er så relateret, som fremgår af mit inner join.
<% Kategorinummer = Request.Querystring(\"kat\") if Kategorinummer = \"\" then Kategorinummer = 0
Set Rec = Conn.Execute(\"SELECT KategoriNavn, ID FROM Kategorier\") do while not Rec.EOF%> <a href=\"menu.asp?kat=<%=Rec(\"ID\")%>\"><%=Rec(\"kategoriNavn\")%></a><br> <%if Rec(\"ID\") = KategoriNummer then Set katRec = Con.Execute(\"SELECT Underpunkter.Navn AS uNavn, Underpunkter.URL AS uURL FROM Underpunkter INNER JOIN Kategorier ON Underpunkter.KategoriID = Kategorier.ID WHERE Kategorier.ID = \"&Kategorinummer) do while not katRec.EOF%> <a href=\"<%=katRec(\"uURL\")%>\"><%=katRec(\"uNavn\")%></a><br> <%katRec.movenext loop%> <%Rec.movenext loop%>
Du har dine menupunkter kaldet kategorier i tabellen \"Kategorier\". Den har to kolonner, \"KategoriNavn\" (Tekst) og og \"ID\" (heltal). ID er primær nøgle, et unikt tal.
Du har en anden tabel med dine underpunkter i tabellen \"Underpunkter\". Den har tre kolonner, en kolonne der er primær nøgle, og som ikke bruges her, en kolonne der hedder \"Navn\" (tekst) og en der hedder KategoriID (et heltal).
Hvis du fx har en kategori der hedder \"Links\", så er KategoriNavn = \"links\", og ID et tal, lad os sige 34.
Så har du to underpunkter, hver af dem er en linie i tabellen Underpunkter, hvor Navn er fx. \"Jubii\" og ID er 34, og den anden har Navn = \"AltaVista\" og ID ligeledes 34.
Følgende kode virker hos mig, et af de problemer du nok har er at deu jo kan have mange niveauer i din menu, så du skal have et felt der fortæller hvilket niveau der skal læses fra databasen, men prøv denne kode og det vil jo nok være nemmest for dig at bruge database og kode jeg har mailet til dig.
<%@LANGUAGE=VBScript %> <% Set conn = Server.CreateObject(\"ADODB.Connection\") Set Rs = Server.CreateObject(\"ADODB.Recordset\") conn.open \"DRIVER=Microsoft Access Driver (*.mdb);DBQ=\" & Server.MapPath(\"toc.mdb\")
strsql = \"SELECT tblCategory.level, tblCategory.[ID], tblCategory.Sort AS CatSort, tblPages.sort AS LinkSort, tblCategory.[Name] AS CatName, tblCategory.HREF AS CatURL, tblPages.[Name] AS LinkName, tblPages.href AS LinkURL FROM tblCategory LEFT JOIN tblPages ON tblCategory.[ID] = tblPages.[ID] ORDER BY tblCategory.Sort, tblPages.sort\"
rs.open strsql, conn, 2, 2
if not rs.eof then rs.movefirst currentID = \"\" %> <html> <head> <link rel=\"stylesheet\" href=\"ftie4style.css\"> <!-- Infrastructure code for the tree --> <script src=\"ftiens4.js\"></script> <!-- Execution of the code that actually builds the specific tree --> <script> USETEXTLINKS = 1
<%
Do While Not Rs.EOF level = Rs(\"level\") Select case level case \"0\" %> level_0 = gFld(\"<%= Rs(\"CatName\") %>\", \"<%= Rs(\"CatUrl\") %>\") <%Case Else parent_level= mid(level,1,len(level)-1) %> level_<%=level%> = insFld(level_<%=parent_level%>, gFld(\"<%= Rs(\"CatName\") %>\", \"<%= Rs(\"CatUrl\") %>\")) <% currentID = Rs(\"ID\") savedID = Rs(\"ID\") Do While currentID = savedID and not rs.eof if Rs(\"LinkName\") <> \"\" Then %> insDoc(level_<%=level%>, gLnk(0, \"<%= Rs(\"LinkName\") %>\", \"<%= Rs(\"LinkURL\") %>\")) <% End if Rs.MoveNext
if not rs.eof then currentID = Rs(\"ID\") Loop End Select
jeg burde nok lige sige til jer andre at der er flere filer i denne menu, og lige helt hvordan de hænger sammen ved jeg ikke dog kan jeg sige at det virker, så skulle i have lyst til at prøve menuen kan i jo skrive jeres mail adresse og jeg kan da senden den.
morpheus >> Du mangler sikkert en end if eller sådan noget
sth >> Det er jo udmærket, og hvis det er nemt at kode/har en god dokumentation, så kan det være den rigtige løsning.
Bare to ting:
Hvis din \"træ-struktur\" har flere hundrede punkter og underpunkter, så bliver den for tung at læse ind, og det vil være bedre at kalde serveren hver gang, som man gør i min løsning. Så vil jeg vælge at kun én gren kan være udvidet ad gangen.
Og så synes jeg det er sjovt og sundt at lave det selv. Jeg har lavet hele skidtet på tolv linier (minus html til at få det til at se godt ud), så kan den også kun lave et underniveau, men det et hjemmelavet, og jeg kan lave det på 1/2 time.
ldanielsen: det kan du selvf have ret i, for den menu jeg henviser til tager faktisk lidt tid at indlæse, hvilket jeg ikke rigtig forstå, da den jeg bruger på mit arbejde nok \"kun\" indeholder ca. 40 henvisninger, men det gode ved den er at den er lige til at gå til og nem og bruge. Har du en side hvor man kan få love at se din menu?
det var vel ikke muligt at få koden :) og en beskrivelse af BD, eller selvf, også meget gerne en kopi, jeg har selvf. stor forståelse for et afslag. hvis du kan bruge den af min til noger kan du hente den på http://sth.renny.dk/menu.zip
Set Con = Server.CreateObject(\"ADODB.Connection\") Con.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\"& Server.MapPath(\"varer.mdb\")
Set Rec = Conn.Execute(\"SELECT KategoriNavn, ID FROM tbl_Kategorier\") do while not Rec.EOF %> <a href=\"test.asp?kat=<%=Rec(\"ID\")%>\"><%=Rec(\"kategoriNavn\")%></a><br>
<% if Rec(\"ID\") = KategoriNummer then Set katRec = Con.Execute(\"SELECT tbl_Underpunkter.Navn AS uNavn, tbl_Underpunkter.URL AS uURL FROM tbl_Underpunkter INNER JOIN tbl_Kategorier ON tbl_Underpunkter.KategoriID = tbl_Kategorier.ID WHERE tbl_Kategorier.ID = \"&Kategorinummer)
DO while NOT katRec.EOF %> <a href=\"<%=katRec(\"uURL\")%>\"><%=katRec(\"uNavn\")%></a><br> <% katRec.MoveNext LOOP end if %>
Ja det er rigtig at jeg gerne vil have en kopi af asp-filer og database, samt andre filer der evt. skal bruges sammen med (kunne være nogle gif-filer, som du brugte sammen med menuen, det var det jeg mente med \" og hvad der eller er til ? \" eller skulle have være ellers. Så hvis det er noget du vil af med må du meget gerne sende det på en mail til mig, da jeg overvejer at udskifte min egen menu da den kan tiltider være langsom, du kan skrive til mig på sth@teknos.dk
Det gør jeg jo heller ikke men, den jeg bruger læser det hele ind på én gang, og skal igennem er java fil, så jeg vil da forvente at din er noget hurtigere.
if Rec(\"ID\") = KategoriNummer then Set katRec = Conn.Execute(\"SELECT SubMenu.Navn AS uNavn, SubMenu.SQL AS uSQL FROM SubMenu INNER JOIN Menu ON SubMenu.KategoriID = Menu.ID WHERE Menu.ID = \"&Kategorinummer)
Det eneste den gør er at trække hovedkategorinavnene ud... Hvis jeg klikker på et navn, sker der absolut ingenting ! Nu har jeg siddet og fiflet med det her adskillige nætter, og er ikke kommet ret meget længere end som indtil jeg fik koden af dig !
Du får lige en oversigt over hvordan min Database er bygget op !
Menu: ID (Tal - Heltal) KategoriNavn (Tekst)
SubMenu: ID (Autonummerering) Navn (Tekst) KategoriID (Tal - Heltal) SQL (Tekst)
Feltet SQL bruges til at søge videre over i tabellen varer !
Tbl_Vare Vare_ID (Autonummerering) VareNR (Tekst) Varetekst (Tekst) Pris_Indkob_umoms (Tal - Langt heltal) PRis_udsalg_umoms (Tal - Langt heltal) Status (Tal - Langt heltal) Info (Notat)
Morpheus >> Hej igen, var bortrejst i weekenden :o)
1: Check at SQL\'en giver noget. At det intet kommer kan skyldes en syntaksfejl, eller at der faktisk ikke er nogle punkter der opfylder kravene. Er det Access, så checker du det under forespørgsel, er det mssql, så er det i query-analyzer.
2: Check om du overhovedet kommer ind forbi dit \"if .... then\":
if Rec(\"ID\") = KategoriNummer then Response.Write(\"DAVS! Det virker!\") Set katRec = Conn.Execute(\"SELECT SubMenu.Navn AS uNavn, SubMenu.SQL AS uSQL FROM SubMenu INNER JOIN Menu ON SubMenu.KategoriID = Menu.ID WHERE Menu.ID = \"&Kategorinummer) DO while NOT katRec.EOF response.write \"<a href=\'varer.asp?\"& katRec(\"uSQL\") &\"\'>\"\'& katRec(\"uNavn\") &\"\'</a><br>\" katRec.MoveNext LOOP End if
Når i nu har fundet en løsning, ville jeg blive meget glad hvis jeg må se den/få den tilsendt, jeg betaler selvf. gerne med 50 point for en mail med DB og asp-kode, ville det være muligt ?
Tjaaa 50 point er vel 50 point, jeg mener at det er rimeligt, jeg har jo også selv kommet med et brugbart forslag, som jeg ganske gratis har stillet til rådighed, hvis det ikke koster 50 pount hvad mener du så det skal koste ?
Hej morpheus Nu da du har fået det til at virke, er det så sådan at jeg kunne få en kopi af asp-fil og DB ? Som jeg tidligere har skrevet så, kunne jeg godt bruge en anden menu end jeg bruger p.t.
Det kan du selvf. have ret i, dog mener jeg at huske at da du oprettede dette spørgsmål første gang var der ikke mange der gad svare dig, men jeg husker da jeg sendte dig en færdig menu, der kunne have opfyldt dit behov, selv om du havde lukket dit spørgsmål. Da jeg sendte denne menu til dig regnede jeg da ikke med at få point, men det afholdt da ikke ig fra at prøve at hjælpe dig ! Så ud fra ovenstående kan jeg nok have lidt svært ved at fåstå dig.
Men klart du har ret til at have den holding du har, selv om jeg nok ikke lige forstår den.
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.