30. september 2004 - 00:18Der er
4 kommentarer og 1 løsning
En asp-side (showbio.asp) skal lage flere sider. Hvordan?
Jeg skal lage en biografi-side for medlemmene i et rockeband. På siden bandmemberbio.asp er det 4 bilder som kan klikkes på, og hvis man klikker på f.eks. richard kommer man til showbio.asp?member=richard. Her skal Richards biografi og hans svar på endel "popstar-spørsmål" skrives ut. Alle 4 bio'er og svar ligger i en access database, og alle tabeller inneholder feltet "member" (navnene på medlemmene i bandet) i tillegg til mye annet.
Jeg ønsker å bruke dreamweaver til å lage en enkelt side (showbio.asp) som genererer sider for hvert bandmedlem avhengig av hvilke bilder man klikker på i bandmemberbio.asp.
Jeg ønsker å vite hvordan jeg kan gjøre det. Tips, hint, alt mottas med takk, men jeg vil aller helst ha en full step-by-step tutorial på hvordan jeg skal gå fram.
For at gjøre det hele dynamisk opretter du et recordset på bandmemberbio.asp, lad os kalde det RsBandMember
Ctrl+F10 (Bindings vinduet) Tryk på + Recordset Query Skriv så Name:RsBandMember Vælg din connection og det ønskede Table Under Columns:All/Selected kan du bare vælge All (Indtil du bliver bedre kjent med det) Under Sort ville jeg nok vælge Sort:NavneFelt : Asending Ok
Hiv da de ønskede info ind på siden fra Bindings vinduet incl. billede feldtet
Marker nu dit billede Rs på siden, i Properties inspectoren klikker du på mappe ikonet til højre for link boksen. klik på showbio.asp, nede ved URL kilkker du på Parameters, Ved Name skriver du Member Ved Value klikker du på det lille Lyn og vælger Id feldtet fra dit Recordset (Brug altid Id feldtet, og ikke tekst feldt som et Navne feldt) Ok
Marker alt du har indsat på siden fra dit RsBandMember
Ctrl+F9 (Server Behaviors) Tryk + Repeat Region Recordset : RsBandMember (hvis du har flere Recordset på siden) Show : All Records Tryk F12 for at se siden, og ret evt. til så det ser ordentligt ud.
På showbio.asp
Opret et Recordset, lad os kalde det RsShowMemberInfo Gør det samme som tidligere, men Filter : ID : = URL Parameter : member (vi satte jo name på linket tidliger til member) Ok
upload nu siderne til serveren, og se bandmemberbio.asp i explore, klik på billedet og du skulle gerne komme til showbio.asp med info om den person du klikkede på.
Takk! Har ikke prøvd det enda, men: Ut fra koden din, ser det ut som om også bildene på banmemberbio er dynamiske (ligger i database). Selve siden bandmemberbio skal ikke ha dynamiske elementer, men kun 4 bilder med linker til hvert av de fire bandmedlemmenes sider. Linken er grei for meg, men det er selve showbio.asp siden jeg trenger hjelp til. På siden skal det trekkes ut av en database med flere tabeller, der alle har et felt som heter member.
Bilder blir aldrig gjemt i databasen, men man gemmer linket til bildet i databasen!! Man lager feks. en mappe i roden av sit web med navnet MappeBilder I MappeBilder ligger så feks. Michael1.jpg Michael2.jpg I Databasen gjemmer man så stien til bilderne /MappeBilder/Michael1.jpg /MappeBilder/Michael2.jpg
og linket lager man da sådant : <img src="<%=(RsBandMember.Fields.Item("Bilde").Value)%>" /> Gjem aldrig bilder direkte i en database, da den blir veldig stor og ekstremt treig av det.
På bandmemberbio.asp skrive du da linket selv på hver av de 4 bilder :
showbio.asp?member=1 showbio.asp?member=2 etc. etc. Legg merke til at jeg bruke ID og ikke navnet.
På showbio.asp skal du i Bindings vinduet dobbel klikke på dit Recordset Advanced i SQL skal du så skrive din SQL setning manuelt da du vil hente fra flere tabeller samtidigt, feks. noget ala
SELECT HovedTabel.FeldtNavn, HovedTabel.FeldtNavn2, RelatertTabel1.FeldtNavn, RelatertTabel2.FeldtNavn, RelatertTabel3.FeldtNavn FROM ((HovedTabel INNER JOIN RelatertTabel1 ON HovedTabel.Id=RelatertTebel1.Id) INNER JOIN RelatertTabel2 ON HovedTabel.Id=RelatertTabel2.Id) INNER JOIN RelatertTabel3 ON HovedTabel.Id=RelatertTabel3.Id WHERE (((HovedTabel.Id)=EnVariabel));
I Variables skal du skrive Name : EnVariabel Default Value : (feks.) 1 (Hvis Querystringen er tom, og Dw bruger det til Test) Run-Time Value : Request.QueryString("member")
Tryk så på Test, og Dw henter info fra alle de relaterede hvis der er data i feldterne, ellers skal du istedet for INNER JOIN bruge RIGHT eller LEFT JOIN. Men alt dette kommer jo lidt an på hvordan du har normaliseret din Database og oprettet relationerne.
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.