Avatar billede jdjensen Juniormester
23. november 2012 - 17:18 Der er 12 kommentarer og
1 løsning

Sæt dropdown option afhængig af URL'en

Hej,

Jeg har en knap på side A der linker til side B. Jeg vil gerne lave så når jeg har en parametre med i linket på knappen fra side A til side B så bliver min form dropdown på side B sat til en bestemt option.

Eks. på link fra side A til B:
http://www.domain.dk/kontakt?dropdown=1

Jeg gætter jeg er nød til at lave det med en parametre i url'en? Det ville ellers være helt perfekt hvis parameteren kunne undgås?
Avatar billede olebole Juniormester
23. november 2012 - 18:11 #1
<ole>

Ja, du kan lave det med en parameter i URL'en - og du kan nok også undgå parametre i URL'en. Hvordan det skal gøres må du enten overlade til en clairvoyant - eller du må komme med flere info  =)

/mvh
</bole>
Avatar billede jdjensen Juniormester
23. november 2012 - 18:29 #2
Haha, ja der er jo ikke noget en clairvoyant ikke kan svare på, eller. ;)

Jeg vil meget gerne undgå parametrerne i URL'en da det i princippet skaber duplicate content (flere url'er til samme side) med mindre de nye url'er med parametrer håndteres korrekt.

Kan dropdown boksen på en måde "lytte" til hvilken side/url linket kom fra og derfra sætte den korrekte dropdown option, uden brug af parametre i url'en? Måske en smartere måde? ;)
Avatar billede olebole Juniormester
23. november 2012 - 19:10 #3
Du kan bruge sidens 'referrer', men den er ikke altid til at stole på, så en sessionvariabel kunne være en mulighed:

$refPage = isset($_SESSION['refPage']) ? $_SESSION['refPage'] : false;
$_SESSION['refPage'] = $_SERVER['PHP_SELF'];

Hvis du skriver det i toppen af dine sider, kan du altid nede i din kode spørge på $_SERVER['PHP_SELF'].

Er den false, kommer bruger udefra - og ellers indeholder den URL'en til siden, som bruger kommer fra.

PS: Husk at bruge session_start(), inden du prøver at bruge sessions  *o)
Avatar billede olebole Juniormester
23. november 2012 - 20:26 #4
Sorry, jeg kom pludselig i tanker om, at jeg vist fik skrevet noget vrøvl her  :D

Du skal naturligvis ikke spørge på $_SERVER['PHP_SELF'] nede i koden, men på $refPage  *o)
Avatar billede Slettet bruger
25. november 2012 - 15:01 #5
Da du siger at man klikker sig til B fra A vha. en knap, var det så ikke oplagt at side A indeholder en form med action="B.php", og B så blot trækker informationen ud af $_POST['knap'] og "indstiller" dropdown'en derudfra ?

(og hvis der ingen $_POST['knap'] er, bare sætter default-værdien)
Avatar billede olebole Juniormester
25. november 2012 - 18:47 #6
#5: Folk her på E kalder meget ofte et link for 'en knap', og da der er tale om problemer med GET-variabler, kan det ligeså godt være et alm. link, spørgeren mener.

Derudover kan man komme så mange steder fra med en 'knap' variabel (såmænd også fra et script). En session fortæller mere sikkert om, hvor brugeren kommer fra.

Endelig kræver det en del opfindsomhed - og en bunke vedligeholdelsesbøvl - hvis det skal gøres på flere/mange sider  =)
Avatar billede Slettet bruger
25. november 2012 - 18:59 #7
Ja, en smule bøvl med forms (hvis ikke den findes allerede!)

Men din hjemmelavede referrer er heller ikke helt bøvl-fri : )
- Kræver at variablen opdateres på ALLE sider.

Og selv da, hvis man forlader sitet, og derefter vender tilbage (direkte til side B) vil denne, fejlagtigt, tro at man kommer direkte fra A..
Avatar billede olebole Juniormester
25. november 2012 - 19:37 #8
"- Kræver at variablen opdateres på ALLE sider."

Det var jo nok en af de væsentligste grunde til, at man i midten af 90'erne begyndte at udvikle serverkode til dynamiske websider. Siden da har det med en smule omtanke været muligt at slippe for at opdatere hver enkelt side for sig  *o)
Avatar billede Slettet bruger
25. november 2012 - 20:56 #9
Hvis du mener include, så skal include-linjen jo i hvertfald tilføjes.
- hvis ikke der er én allerede man kan udvidde selvfølgelig.
Men det kræver også at alle sider kører igennem PHP-fortolkeren..
Avatar billede olebole Juniormester
25. november 2012 - 21:25 #10
*GaaaaaAaaaaaaB* jaja! Man kan altid finde et eller andet, hvis man er desparat nok!  :oP

Hvis man ikke bruger en eller anden form for sideskabelon og/eller includes, har man ikke forstået det allerførste af webkodning med serverscripting.

"Men det kræver også at alle sider kører igennem PHP-fortolkeren.."

Prøv nu en mindre stram badehætte! Der er tale om et PHP-spørgsmål, så: Ja, det skal køre gennem PHP-fortolkeren!
Avatar billede Slettet bruger
25. november 2012 - 23:01 #11
Vi er ikke konkurrenter, Ole. Du vinder ikke noget ved at nedgøre mig og ignorere min argumenter.

Form-løsningen er en enklere, og mere robust løsning på spørgerens problem. Slut herfra.
Avatar billede olebole Juniormester
26. november 2012 - 00:07 #12
Jamen, at du tror, det handler om at vinde, udstiller jo bare dine bevæggrunde! Det er dig selv, der skraber den alleryderste periferi for argumenter. Dem ryster jeg på hovedet af - men det er ikke det samme som 'at ignorere'
Avatar billede jdjensen Juniormester
07. maj 2013 - 18:04 #13
(lukker)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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