28. juni 2003 - 13:56Der er
21 kommentarer og 1 løsning
Hent asp(id) i tabel ved opstart
Jeg har en menu.asp med forskellige menuer med hver sin ID. På min hoved side (default.asp) har jeg oprettet en tabel, hvor den første menu (menu.asp?ID=1) skal ligges ind i en felt! F.eks
<TABLE> <TR> <TD> <% asp menu %></TD> </TR> </TABLE>
... i din menu.asp kan du så benytte variablen "PageId" som allerede er definere i default.asp - du behøver altså ikke at sende en variabel med i en inkluderet asp-fil.
<% if "1" = Request.Querystring ("id") then %> .........Menu skrevet i html............. <% end IF %>
<% if "2" osv.
De virker når jeg bruger kommandoen : munu.asp?ID=1 så kan jeg se den første menu og ....?ID=2 så nummer 2. Det skal jeg bruge til at kunne navigere videre med. Som sagt tidligere, skal menu.asp?ID=1 lægges ind i <td> <% .her. %></td> ved start af default.asp.
Prøv at give et eksempel hvordan du vil gøre det? (Jeg er ikke så godt til ASP endnu!)
************************* default.asp: (copy/paste) ************************* <% 'Inkludér filen menu.asp hvori menuen bygges! %> <!-- #INCLUDE file="menu.asp" --> <% 'Definér din page variabel (Denne kunne f.eks. hedde 2 på en siden "profil") pageId = 1 %> <% response.write sMenu %>
************************* menu.asp: (copy/paste) ************************* <TABLE> <TR> <TD> <% if pageId = 1 then %> Menupunkt valgt <% else %> Menupunkt ikke valgt (Du er på en anden side med en anden "pageId") <% end if %> </TR> </TABLE>
************************* Håber det kan hjælpe dig lidt igang... det kunne sikkert strikkes mere genialt sammen, men det her skulle da virke.
Løsningen med request.querystring ville jo netop kræve at dette id stod anført i din URL, hvilket nok er noget besværligt på din første side - og i øvrigt ikke nødvendigt...
Det kan som sagt løses på forskellige måder. Her har jeg bare pakket din menu ned i variablen "sMenu", som altså er inkluderet i menu.asp. Istedet for at skrive HTML blandet med HTML, har jeg bare effektiviseret det lidt ved at skrive det hele i VBScript. Variablen "sMenu" er derefter tilgængelig fra din default.asp.
Den inkluderede fil smelter via <!-- include --> tagget sammen med default.asp og variablerne er derfor tilgængelige på tværs. Hvis du ikke kender så meget til VBScript kan du sagtens skrive det som du selv foreslår:
<TABLE> <TR> <TD> <% asp menu %></TD> </TR> </TABLE>
og så bare udskrifte din "asp menu" med <!-- #INCLUDE file="menu.asp" --> - det ville virke fint!
Du kan også teste det eksempel jeg har lavet tidligere ved at samle det hele i en fil... Det virker perfekt:
<% pageId = 1
sMenu = "<TABLE>" & vbcrlf & _ " <TR>" & vbcrlf & _ " <TD>" if pageId = 1 then sMenu = sMenu & _ "Menupunkt valgt" else sMenu = sMenu & _ "Menupunkt ikke valgt (Du er på en anden side!)" end if sMenu = sMenu & _ " </TR>" & vbcrlf & _ "</TABLE>"
Hvordan ville jeg kunne skifte den ud, når jeg trykker på en link i menuen, og en anden menu skal dukke op med nye links?
F.eks linket: "Hvem er vi" har under menuer: "Vi er", "Her bor vi" og Bliv medlem". Den første linker til en ny menu , og lader de 3 andre dukke op....!
Kort fortalt: Jeg går fra menu.asp?ID=1 til menu.asp?ID=2.. i sammen felt.
På siden "Hvem er vi" kan du jo definere et nyt pageId (f.eks. 2), på den måde kan menu.asp (når den ellers er udvidet lidt i forhold til det vi allerede har lavet) via de betingede sætninger (if pageId = ?) danne menuen til dig...
Hvis du skal lave nogle undersider dertil, skal du måske arbejde med 2 forskelige typer af idéer - som f.eks.:
pageId (Sider i første niveau) subPageId (Underliggende sider)
... hvilket naturligvis betyder at din menu.asp kan blive en lang fanden - fordelen er jo så at denne er inkluderet og dermed ikke forstyrer meget i dine sider...
... I øvrigt er det lovligt at bruge " i din HTML kode, når du bruger dem i vbscript skal de bare skrives dobbelt, altså ""... Eksempel <table border=""0"""> - bare hvis du nu ikke var klar over dette..
Hvis vi er enige om at default.asp har id=1 og f.eks. hvem-er-vi.asp er id=2, så skal dette ikke skrives i menu.asp, men derimod de enkelte filer (default.asp og hvem-er-vi.asp).
Menu.asp er altid uændret - den samme fil inkluderes på alle sider.
Okay.. hvis jeg sætter <% pageID = 1 %> inde på default.asp, så vil den ikke hente menuen med pageID=1 ? Hov..! Jeg har ikke 2 forskelige asp-side-menuer? jeg har en default.asp der kalder menuid=1 i menu.asp. NÅr jeg så trykekr på en menu link, vil der komme 2 nye frem!
Koder lidt i det vilde snart..! Kære s1000.. du skal stadigvæk tænke på, at når deault.asp (html koder, tabeller og billeder) hentes første gang, ligesom index.html, så opretter den en masse så ting (kig i forrige parantes), der til skal den første menu?ID=1 hentes i menu.asp. Fra den ville der være muligheder for at gå til andre under menuer f.eks menu?ID=2 (som har ekstra menuer, og skifter den forrige ud) Først nu vil der være mulighed for at hente en html side i en frames. Håber snart jeg har ledt Jer/Dig ind på problemet !!
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.