Avatar billede knutbl Nybegynder
30. september 2004 - 00:18 Der 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.

KnB
Avatar billede bojohansen Nybegynder
03. oktober 2004 - 12:01 #1
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å.
Avatar billede knutbl Nybegynder
06. oktober 2004 - 15:01 #2
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.
Avatar billede bojohansen Nybegynder
06. oktober 2004 - 22:42 #3
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.
Avatar billede knutbl Nybegynder
24. oktober 2004 - 09:51 #4
Tusen takk for god hjelp! Jeg lærte utrolig mye av dette, og vil gjerne gi deg poengene,  bojohansen! Men, du må gi meg et svar!
Avatar billede bojohansen Nybegynder
24. oktober 2004 - 11:50 #5
Bare hyggelig ;)
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