/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Cookie-styring af brugervalgt css.
Fra : Erik Ginnerskov


Dato : 31-01-07 22:36

Hej NG

Jeg har en side, hvor brugerne ved klik på links kan vælge mellem 3 mulige
sidelayouts. Dette script over DTD styrer det:

<%
style_ID = Request.QueryString("style")
dim style
Select Case style_ID
Case "../../hss-main.css", "ds2.css", "ds3.css"
style = style_ID
Case Else
style = "../../hss-main.css"
End Select
%>

Det fungerer for så vidt fint. Men skifter man til en anden side med samme
script-mulighed, skulle det valgte layout gerne fastholdes.

Jeg har kigget lidt på cookies i html.dk's lektion 13 i asp-tutorialen og
har prøvet at sætte noget sammen, men kan ikke få det til at virke:

<klip>
' Informationer hentes i cookien
strNavn = Request.Cookies("designskifte")("css")
strCss = Request.Cookies("designskifte")("css")
</klip>

.... indsat øverst i scriptet - tjek, om der er defineret design i en cookie.
___________

<klip>
' Informationer lagres i cookien
Response.Cookies("designskifte")("css") = "" ' noget info om designvariabel
' skal nok
indsættes her
' mellem " og "
Response.Cookies("designskifte").Expires = Date+30
</klip>

.... indsat nederst i scriptet - sæt eller opdater cookie.

Jeg får ikke nogen fejlmeldinger, det valgte design fastholdes bare ikke ved
sideskifte.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



 
 
Erik Ginnerskov (31-01-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 31-01-07 23:28

Erik Ginnerskov wrote:

> Jeg får ikke nogen fejlmeldinger, det valgte design fastholdes bare
> ikke ved sideskifte.

Jeg har arbejdet lidt videre med scriptet, men det fastholder stadig ikke
valgt layout:

<%
' Informationer hentes i cookien
strStyle = Request.Cookies("designskifte")("style")
style_ID = Request.QueryString("style")
dim style

Select Case style_ID
Case "../../hss-main.css", "ds2.css", "ds3.css"
style = style_ID
Case Else
style = "../../hss-main.css"
End Select
' Informationer lagres i cookien
Response.Cookies("designskifte")("style") = strStyle
Response.Cookies("designskifte").Expires = Date+30
%>

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (01-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 01-02-07 02:34

On Wed, 31 Jan 2007 23:28:18 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Erik Ginnerskov wrote:
>
>Jeg har arbejdet lidt videre med scriptet, men det fastholder stadig ikke
>valgt layout:
>
><%
>' Informationer hentes i cookien
>strStyle = Request.Cookies("designskifte")("style")
>style_ID = Request.QueryString("style")
>dim style
>
>Select Case style_ID
> Case "../../hss-main.css", "ds2.css", "ds3.css"
> style = style_ID
> Case Else
> style = "../../hss-main.css"
>End Select
>' Informationer lagres i cookien
>Response.Cookies("designskifte")("style") = strStyle
>Response.Cookies("designskifte").Expires = Date+30
>%>

Er der forskel på style og strStyle?
Så vidt jeg kan se, har din Select Case ingen indvirkning på din
Cookie. Skal den ikke det?
Hint: Option Explicit er en god ven :)


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Erik Ginnerskov (02-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 02-02-07 02:06

Jørn Andersen wrote:

> Hint: Option Explicit er en god ven :)

Det prøvede jeg så:

<% Option Explicit %>
<%
' Informationer hentes i cookien
strStyle = Request.Cookies("designskifte")("style")

' her følger det fungerende script, der skifter sidelayout
style_ID = Request.QueryString("style")
dim style

Select Case style_ID
Case "../../hss-main.css", "ds2.css", "ds3.css"
style = style_ID
Case Else
style = "../../hss-main.css"
End Select
'her slutter layoutskiftescriptet

' Informationer lagres i cookien
Response.Cookies("designskifte")("style") = strStyle
Response.Cookies("designskifte").Expires = Date+30
%>

Så får jeg denne fejlmelidng:

Microsoft VBScript compilation error '800a0400'
Expected statement
xxx.inc, line 1
Option Explicit
^

Den forstår jeg ikke noget af. aspfaq.com snakker om inkompatible
asp-versioner, men hverken lokalt eller på nettet vil den æde kodelinje. Jeg
må prøve at se på en ommøblering. Måske det er fordi jeg - efter
sammenstykning ef enkeltkomponenter har dette:

<% Dim strTitle
strTitle="Test af alternativ css"%>

.... stående før sætningen med "Option Explicit"

> Er der forskel på style og strStyle?

Det var et trin i udviklingsfasen. Det fungerede ikke, når der ikke står
"str" foran i de to sætninger til cookie - men det gør det heller ikke med,
så ...

> Så vidt jeg kan se, har din Select Case ingen indvirkning på din
> Cookie. Skal den ikke det?

Jo, det var faktisk meningen, at det valg, der er gjort, skal noteres i
cookien. Men det hjælper ikke, at de sætninger, der skriver cookien, sættes
op før "End Select"?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Erik Ginnerskov (02-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 02-02-07 02:31

Erik Ginnerskov wrote:

> Måske det er fordi
> jeg - efter sammenstykning ef enkeltkomponenter har dette:
>
> <% Dim strTitle
> strTitle="Test af alternativ css"%>
>
> ... stående før sætningen med "Option Explicit"

Ja, så langt så godt. En ommøblering fjernede fejlmeldingen, men
layoutvalget bliver stadig ikke fastholdt.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (02-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 02-02-07 02:45

On Fri, 2 Feb 2007 02:06:13 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Jørn Andersen wrote:
>
>> Hint: Option Explicit er en god ven :)
>
>Det prøvede jeg så:
>
><% Option Explicit %>
<snip>

>Så får jeg denne fejlmelidng:
>
> Microsoft VBScript compilation error '800a0400'
> Expected statement
> xxx.inc, line 1
> Option Explicit
> ^
>
>Den forstår jeg ikke noget af. aspfaq.com snakker om inkompatible
>asp-versioner, men hverken lokalt eller på nettet vil den æde kodelinje. Jeg
>må prøve at se på en ommøblering. Måske det er fordi jeg - efter
>sammenstykning ef enkeltkomponenter har dette:
>
> <% Dim strTitle
> strTitle="Test af alternativ css"%>
>
>... stående før sætningen med "Option Explicit"

Det lyder helt rigtigt. Dokumentationen siger:

If used, the Option Explicit statement must appear in a script before
any other statements.

Så den skal ikke stå i inkluderede filer, men i "hoved-filen".


>> Er der forskel på style og strStyle?
>
>Det var et trin i udviklingsfasen. Det fungerede ikke, når der ikke står
>"str" foran i de to sætninger til cookie - men det gør det heller ikke med,
>så ...

Jo, men du er nødt til at holde fast i dine variable. Hvis den skal
hedde strStyle, når du indsætter den, så skal den ikke hedde noget
andet, mens den bliver behandlet (i Select-valget).
Omdøb "style" til "strStyle".

>> Så vidt jeg kan se, har din Select Case ingen indvirkning på din
>> Cookie. Skal den ikke det?
>
>Jo, det var faktisk meningen, at det valg, der er gjort, skal noteres i
>cookien. Men det hjælper ikke, at de sætninger, der skriver cookien, sættes
>op før "End Select"?

Prøv at udskrive din strStyle, inden du indsætter i Cookien:
Response.Write strStyle
Response.End
- så har du styr på, hvad det er, du indsætter.

Hvis ikke du har det forventede dér, så ryk op og se, hvad du får fra
din QueryString.
Response.Write style_ID
Response.End

Good luck!

--
Jørn Andersen,
Brønshøj

Erik Ginnerskov (04-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 04-02-07 01:22

Jørn Andersen wrote:

>>> Så vidt jeg kan se, har din Select Case ingen indvirkning på din
>>> Cookie. Skal den ikke det?
>>
>> Jo, det var faktisk meningen, at det valg, der er gjort, skal
>> noteres i cookien. Men det hjælper ikke, at de sætninger, der
>> skriver cookien, sættes op før "End Select"?
>
> Prøv at udskrive din strStyle, inden du indsætter i Cookien:
> Response.Write strStyle
> Response.End

Øh, scriptet står før DTD på siden, så der kan da ikke sættes noget output
til browseren der - jeg får faktisk kun en blank side.

Men ved at kigge bag facaden i FF kan jeg se, at der faktisk bliver lavet en
cookie. Den har muligvis endda indhold, jeg forventer.

Min response.cookie ser nu sådan ud:

Response.Cookies("designskifte")("style") = style_ID

og indholdet i cookien ser f.eks. sådan ud:

style=ds3%2Ecss

.... hvor de tre alternativer er "?style=../hss-main.css", "?style=ds2.css"
og "?style=ds3.css"

Hvis det holder, skal jeg så bare have aflæst cookien ved sideskifte. I
øjeblikket ser min request.cookie sådan ud:

style = Request.Cookies("designskifte")("style")

Ved sideskifte springes tilbage til standarddesign - det er ikke meningen.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (04-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 04-02-07 05:44

On Sun, 4 Feb 2007 01:21:49 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>> Prøv at udskrive din strStyle, inden du indsætter i Cookien:
>> Response.Write strStyle
>> Response.End
>
>Øh, scriptet står før DTD på siden, så der kan da ikke sættes noget output
>til browseren der - jeg får faktisk kun en blank side.

Joda, det kan du sagtens.
De browsere jeg kender, vil vise den slags som ren tekst - prøv selv.


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Erik Ginnerskov (05-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 05-02-07 08:16

Jørn Andersen wrote:

>> Øh, scriptet står før DTD på siden, så der kan da ikke sættes noget
>> output til browseren der - jeg får faktisk kun en blank side.
>
> Joda, det kan du sagtens.
> De browsere jeg kender, vil vise den slags som ren tekst - prøv selv.

Både min Firefox 2.0 og min IE 7 viser en blank side. Men så prøvede jeg at
lave en test.asp:

<%
style_ID = Request.QueryString("style")
dim style

Select Case style_ID
Case "../../hss-main.css", "ds2.css", "ds3.css"
style = style_ID
Case Else
style = "../../hss-main.css"
End Select

dim QueryString
Response.Write style_ID
Response.end

' Informationer lagres i cookien
Response.Cookies("aspdesignskifte")("style") = style_ID
Response.Cookies("aspdesignskifte").Expires = Date+30
%>


Når jeg kalder test.asp med nogle parametre (eks. ?style=ds2.css), udskriver
den netop den info, jeg vil have lagret i cookien (ds2.css).

Nu skal jeg så have hentet info i cookien - hvis den da skal hentes:

Først undersøges, om brugeren vil ændre sidens design.

Hvis ikke, skal det tjekkes, om der i en cookie er lagret
information om et tidligere foretaget valg.

Derefter bliver eventuel style_ID (fra querystring eller cookie)
sammenlignet med de lovlige muligheder.

Er der ikke detekteret noget style_ID eller er der givet ulovligt
input, skal style sættes til standard.

Men hvordan det lige skal formuleres, kan jeg ikke overskue.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Erik Ginnerskov (07-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 07-02-07 15:01

Erik Ginnerskov wrote:

> Nu skal jeg så have hentet info i cookien - hvis den da skal hentes:

Jeg har forsøgt at strikke noget sammen, der skulle kunne hente indholdet i
cookien, hvis ikke brugeren aktivt har bedt om et bestemt sidelayout:

<%
' Hent brugervalgt style-info hvis defineret
style_ID = Request.QueryString("style")
dim style

' Hvis intet brugervalgt style-info defineret
if style_ID = "" then

' Hent style-info fra cookie
style = Request.Cookies("designskifte")("style")
end if

Select Case style_ID
Case "../hss-main.css", "ds2.css", "ds3.css"
style = style_ID
Case Else
style = "../hss-main.css"
End Select

' style-info lagres i cookie
Response.Cookies("designskifte")("style") = style_ID
Response.Cookies("designskifte").Expires = Date+30
%>

Skiftet i sidelayoyt fungerer fint som selvstændig funktion, men hvis der
ikke er blevet bedt om et bestemt layout, bliver cookiens indhold ikke
hentet og brugt.



Jørn Andersen (07-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 07-02-07 15:32

On Wed, 7 Feb 2007 15:01:04 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Jeg har forsøgt at strikke noget sammen, der skulle kunne hente indholdet i
>cookien, hvis ikke brugeren aktivt har bedt om et bestemt sidelayout:
>
> <%
> ' Hent brugervalgt style-info hvis defineret
> style_ID = Request.QueryString("style")
> dim style

Spørgsmålet er, hvad du får, når du ikke får noget
Prøv at udskrive værdien.
Formentlig vil du få en Empty-værdi.
Check evt. med:
Response.Write IsEmpty(style_ID)

Det kan du komme ud over ved at erstatte ovenstående med:
style_ID = Trim("" & Request.QueryString("style"))
- så vil den blive til en tom streng i stedet.

> ' Hvis intet brugervalgt style-info defineret
> if style_ID = "" then

Hvis værdien er Empty, så er den ikke lig "" - men det er den, hvis du
retter som foreslået.

>Skiftet i sidelayoyt fungerer fint som selvstændig funktion, men hvis der
>ikke er blevet bedt om et bestemt layout, bliver cookiens indhold ikke
>hentet og brugt.

Metoden til at løse den slags problemer er at bruge Response.Write på
sine variable - før If'en, inde i If'en og efter If'en. Så bliver det
hurtigt afsløret, hvad der sker undervejs.


Good luck!

--
Jørn Andersen,
Brønshøj

Erik Ginnerskov (08-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 08-02-07 23:59

Jørn Andersen wrote:

> Det kan du komme ud over ved at erstatte ovenstående med:
> style_ID = Trim("" & Request.QueryString("style"))

Så lykkedes det at få fastholdt det brugervalgte sidelayout ved skift af
side:

<%
' Hent brugervalgt style-info hvis defineret
style_ID = Trim("" & Request.QueryString("style"))
dim style

' Hvis intet brugervalgt style-info defineret
if style_ID = "" then

' Hent style-info fra cookie
style_ID = Request.Cookies("aspdesignskifte")("style")
end if

Select Case style_ID
Case "../hss-main.css", "ds2.css", "ds3.css"
style = style_ID
Case Else
style = "../hss-main.css"
End Select

' style-info lagres i cookie
Response.Cookies("aspdesignskifte")("style") = style_ID
Response.Cookies("aspdesignskifte").Expires = Date+30
%>

Jeg siger tak for sparringen.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (09-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 09-02-07 00:15

On Thu, 8 Feb 2007 23:58:36 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Så lykkedes det

Hvad er det, man siger: En lang fødsel giver de kønneste børn

>Jeg siger tak for sparringen.

Velbekomme.


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Erik Ginnerskov (09-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-02-07 15:40

Jørn Andersen wrote:
> On Thu, 8 Feb 2007 23:58:36 +0100, "Erik Ginnerskov"
> <erik@donotspammeplease.invalid> wrote:
>
>> Så lykkedes det
>
> Hvad er det, man siger: En lang fødsel giver de kønneste børn

Det må man da håbe, for jeg har konstateret en enkelt svaghed: Hvis der ikke
er sket et brugervalg af sidedesign ved indlæsning af en side og der endnu
ikke eksisterer en cookie med oplysning om foretrukne sidedesign, indlæses
der slet ikke noget css - siden er helt uformateret:

http://hjemmesideskolen.dk/usenet/designskift.asp

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (09-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 09-02-07 16:41

On Fri, 9 Feb 2007 15:40:27 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>jeg har konstateret en enkelt svaghed: Hvis der ikke
>er sket et brugervalg af sidedesign ved indlæsning af en side og der endnu
>ikke eksisterer en cookie med oplysning om foretrukne sidedesign, indlæses
>der slet ikke noget css - siden er helt uformateret:

Det burde den nu ikke være, men du burde til gengæld ikke få den gemt
"første gang" i cookien.

Hvis du i stedet for to variable nøjes med én, fx strStyle (når det nu
skal være en offentlig side, så er det en god idé at kalde sine
variable efter en standard - i stedet for bare "style"), så burde det
virke med:

<%
' Hent brugervalgt style-info hvis defineret
strStyle = Trim("" & Request.QueryString("style"))

' Hvis intet brugervalgt style-info defineret
If strStyle = "" Then
' Hent style-info fra cookie
strStyle = Trim("" & Request.Cookies("aspdesignskifte")("style"))
End If

Select Case strStyle
Case "../hss-main.css", "ds2.css", "ds3.css"
' Ingen ændring
Case Else
strStyle = "../hss-main.css"
End Select

' style-info lagres i cookie
Response.Cookies("aspdesignskifte")("style") = strStyle
Response.Cookies("aspdesignskifte").Expires = Date+30
%>

Select Case'n er også ændret.

Så burde forløbet være:
- Hent strStyle fra QueryString
- Hvis det er en tom streng, hent fra Cookie
- Hvis den er lig en af de foruddefinerede værdier, er der ingen
ændring - ellers sættes den til default-værdien.
- Uanset hvorfra inputtet kommer, gemmes værdien i ccokie (og anvendes
videre nede på siden).

Lige et par kommentarer til din forklaring:
> http://hjemmesideskolen.dk/usenet/designskift.asp

"Først skal der øverst i dokumentet, før DocType, indsættes dette
asp-script:"
- det *behøver* ikke være før DOCTYPE, men blot før CSS-linket
- Option Explicit skal selvfølgelig være øverst, men det er ikke
normalt at tage den med i visning af et "del-script".

Ryk disse to linier ud til venstre kant, så er det lettere at følge
logikken:
-> End If
-> Select Case ...

Good luck!

--
Jørn Andersen, Brønshøj

Danske tropper hjem fra Irak, nu!
Skriv under: www.kirkmand-initiativet.dk

Erik Ginnerskov (10-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 10-02-07 00:32

Jørn Andersen wrote:

> Det burde den nu ikke være,

Sjovt nok kunne jeg her til aften ikke genskabe situationen. Jeg ved så
ikke, hvordan jeg havde klokket i det i eftermiddags.

> men du burde til gengæld ikke få den gemt
> "første gang" i cookien.

Det er rigtigt. Indlæses siden uden noget brugervalg, skrives der bare dette
i cookien:

style=

Med din ændring af variablerne skrives den aktuelle style korrekt i cookien,
også selv om der ikke er blevet valgt nogen (scriptet har indsat den
defaulte style).

> Hvis du i stedet for to variable nøjes med én, fx strStyle (når det nu
> skal være en offentlig side, så er det en god idé at kalde sine
> variable efter en standard - i stedet for bare "style"), så burde det
> virke

Lyder som et godt argument. Jeg ændrer det som foreslået.

> Lige et par kommentarer til din forklaring:

> "Først skal der øverst i dokumentet, før DocType,.."

> - det *behøver* ikke være før DOCTYPE, men blot før CSS-linket
> - Option Explicit skal selvfølgelig være øverst, men det er ikke
> normalt at tage den med i visning af et "del-script".
>
> Ryk disse to linier ud til venstre kant, så er det lettere at følge
> logikken:
> -> End If
> -> Select Case ...

Rettet: http://hjemmesideskolen.dk/html/testsider/designskift.asp

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (10-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 10-02-07 03:01

On Sat, 10 Feb 2007 00:32:06 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Rettet: http://hjemmesideskolen.dk/html/testsider/designskift.asp

Jeg kan godt lide, at du også bruger eksemplet til at flytte rundt på
menuen - det illustrerer fleksibiliteten i CSS-layout.

Godt kæmpet

--
Jørn Andersen, Brønshøj

Danske tropper hjem fra Irak, nu!
Skriv under: www.kirkmand-initiativet.dk

Erik Ginnerskov (10-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 10-02-07 23:32

Jørn Andersen wrote:

> Jeg kan godt lide, at du også bruger eksemplet til at flytte rundt på
> menuen - det illustrerer fleksibiliteten i CSS-layout.

Det var da også den dybere bagtanke med flytteriet. Samme side, men vidt
forskelligt layout.

> Godt kæmpet

Jeg takker endnu en gang - på egne og især på mine brugeres vegne.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (07-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 07-02-07 15:42

On Mon, 5 Feb 2007 08:16:12 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Jørn Andersen wrote:
>
>>> Øh, scriptet står før DTD på siden, så der kan da ikke sættes noget
>>> output til browseren der - jeg får faktisk kun en blank side.
>>
>> Joda, det kan du sagtens.
>> De browsere jeg kender, vil vise den slags som ren tekst - prøv selv.
>
>Både min Firefox 2.0 og min IE 7 viser en blank side.

Så er det nok fordi der ikke er noget indhold. For at være sikker, kan
du i stedet bruge:
Response.Write "strStyle: " & strStyle
- så vil der under alle omstændigheder stå "strStyle: "


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Jens Gyldenkærne Cla~ (09-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-02-07 16:36

Erik Ginnerskov skrev:

> Det må man da håbe, for jeg har konstateret en enkelt svaghed:
> Hvis der ikke er sket et brugervalg af sidedesign ved
> indlæsning af en side og der endnu ikke eksisterer en cookie
> med oplysning om foretrukne sidedesign, indlæses der slet ikke
> noget css - siden er helt uformateret:

Det problem kan jeg ikke genskabe. Har lige prøvet i FF, Opera og
IE - og tjekkede en ekstra gang i FF efter at have slettet cookies.
I alle tilfælde vises siden fint med standardformateringen (hvad
den også burde med den viste kode).
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Jens Gyldenkærne Cla~ (07-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-02-07 15:40

Erik Ginnerskov skrev:


> ' Hvis intet brugervalgt style-info defineret
> if style_ID = "" then
>
> ' Hent style-info fra cookie
> style = Request.Cookies("designskifte")("style")

Her har du hentet style-info fra din cookie.

> Select Case style_ID
> Case "../hss-main.css", "ds2.css", "ds3.css"
> style = style_ID
> Case Else
> style = "../hss-main.css"

- men her overskriver du den igen (Case Else fanger også de
tilfælde hvor der ikke er angivet style_ID).

Put din select-konstruktion ind i en ELSE-del til den øverste if-
sætning - så bliver din cookie-værdi ikke overskrevet.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Erik Ginnerskov (09-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-02-07 00:06

Jens Gyldenkærne Clausen wrote:

>> ' Hvis intet brugervalgt style-info defineret
>> if style_ID = "" then
>> ' Hent style-info fra cookie
>> style = Request.Cookies("designskifte")("style")
>
> Her har du hentet style-info fra din cookie.

Ja, hvis der ikke er sket et brugervalg, skal en eventuel cookie aflæses.

>> Select Case style_ID
>> Case "../hss-main.css", "ds2.css", "ds3.css"
>> style = style_ID
>> Case Else
>> style = "../hss-main.css"
>
> - men her overskriver du den igen (Case Else fanger også de
> tilfælde hvor der ikke er angivet style_ID).

Nej, der bliver ikke overskrevet noget. Cookien bliver ikke læst, hvis
brugeren har foretaget et valg. Det var bare bagateller, der skulle
omformuleres.

> Put din select-konstruktion ind i en ELSE-del til den øverste if-
> sætning - så bliver din cookie-værdi ikke overskrevet.

Det vil muligvis også fungere - der er nok ikke behov for at validere input
fra cookien, det er allerede valideret, inden det blev lagt i cookien. Men
det fungerer nu, se mit svar til Jørn.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Erik Ginnerskov (09-02-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-02-07 00:49

Erik Ginnerskov wrote:

> Det vil muligvis også fungere - der er nok ikke behov for at validere
> input fra cookien, det er allerede valideret, inden det blev lagt i
> cookien. Men det fungerer nu, se mit svar til Jørn.

På den anden side: Sættes select-funktionen op før if-delen, er style ikke
længere tom, når man tester, om cookien skal aflæses. Ergo bliver cookien
ikke aflæst, selv om den skal, så ...

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (09-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 09-02-07 01:57

On Fri, 9 Feb 2007 00:05:43 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Jens Gyldenkærne Clausen wrote:
>
>>> ' Hvis intet brugervalgt style-info defineret
>>> if style_ID = "" then
>>> ' Hent style-info fra cookie
>>> style = Request.Cookies("designskifte")("style")
>>
>> Her har du hentet style-info fra din cookie.
>
>Ja, hvis der ikke er sket et brugervalg, skal en eventuel cookie aflæses.
>
>>> Select Case style_ID
>>> Case "../hss-main.css", "ds2.css", "ds3.css"
>>> style = style_ID
>>> Case Else
>>> style = "../hss-main.css"
>>
>> - men her overskriver du den igen (Case Else fanger også de
>> tilfælde hvor der ikke er angivet style_ID).
>
>Nej, der bliver ikke overskrevet noget. Cookien bliver ikke læst, hvis
>brugeren har foretaget et valg.

Jo, Jens har ret:
style_ID er værdien fra brugervalg
style er værdien fra cookien

- men din select tester på style_ID, og i de tilfælde hvor den er "",
vil den blive fanget af Case Else. Cookie-værdien har under ingen
omstændigheder indflydelse på resultatet.

I den endelige version er det rigtigt, fordi værdien fra cookien nu
også hedder style_ID.


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Jens Gyldenkærne Cla~ (09-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-02-07 10:27

Erik Ginnerskov skrev:

>> - men her overskriver du den igen (Case Else fanger også de
>> tilfælde hvor der ikke er angivet style_ID).
>
> Nej, der bliver ikke overskrevet noget.

Jo. Det er ikke cookien der bliver overskrevet, men variablen
style. Det vil du kunne se hvis du udskriver style før og efter din
select case-sætning.

I din ændrede version (jf. post kl. 23:58) fungerer det fordi du nu
kun sætter style-variablen inde i select case-sætningen (og bruger
style_id uden for).
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409084
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste