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

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Ændring af eksternt stylesheet med PHP
Fra : Phecdaret


Dato : 15-11-08 08:57

Hej alle,

Jeg ønsker at ændre "width" for en div-klasse i et ekstern
stylesheet på baggrund af nogle beregninger i php. Kan dette lade
sig gøre?

Mvh Kenneth

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Carsten (15-11-2008)
Kommentar
Fra : Carsten


Dato : 15-11-08 11:00

"Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
news:491e80b8$0$90269$14726298@news.sunsite.dk...
> Jeg ønsker at ændre "width" for en div-klasse i et ekstern
> stylesheet på baggrund af nogle beregninger i php. Kan dette lade
> sig gøre?

Laver du selv div'en ? altså...

<div class=someExternalStyle>Dette er min udgave af div'en</div>

????

I givet fald så kan du godt ændre hvad-som-helst omkring div'en - incl.
bredden. Du giver div'en et "id" og kan så ændre dens style med javascript
(evt. genereret af din php kode):

document.getElementById("mydiv").style.width = "500px";

Carsten



Phecdaret (17-11-2008)
Kommentar
Fra : Phecdaret


Dato : 17-11-08 15:22

Carsten wrote in dk.edb.internet.webdesign.serverside.php:
> "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
> news:491e80b8$0$90269$14726298@news.sunsite.dk...
> > Jeg ønsker at ændre "width" for en div-klasse i et ekstern
> > stylesheet på baggrund af nogle beregninger i php. Kan dette lade
> > sig gøre?
>
> Laver du selv div'en ? altså...
>
> <div class=someExternalStyle>Dette er min udgave af div'en</div>
>
Yes, jeg laver selv div'en (faktisk er det flere div's af samme klasse).
>
> I givet fald så kan du godt ændre hvad-som-helst omkring div'en - incl.
> bredden. Du giver div'en et "id" og kan så ændre dens style med javascript
> (evt. genereret af din php kode):
>
> document.getElementById("mydiv").style.width = "500px";

Når du benytter document.getElementById("mydiv"), får du så ikke kun fat i
div'en med den pågældende id? Mit problem er netop, at jeg ønsker at ændre i
en hel klasse, så flere divs bliver påvirket.

>
> Carsten
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Carsten (17-11-2008)
Kommentar
Fra : Carsten


Dato : 17-11-08 15:32

"Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
news:49217dea$0$90266$14726298@news.sunsite.dk...
> Carsten wrote in dk.edb.internet.webdesign.serverside.php:
>> "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
>> news:491e80b8$0$90269$14726298@news.sunsite.dk...
>> > Jeg ønsker at ændre "width" for en div-klasse i et ekstern
>> > stylesheet på baggrund af nogle beregninger i php. Kan dette lade
>> > sig gøre?
>>
>> Laver du selv div'en ? altså...
>>
>> <div class=someExternalStyle>Dette er min udgave af div'en</div>
>>
> Yes, jeg laver selv div'en (faktisk er det flere div's af samme klasse).
>>
>> I givet fald så kan du godt ændre hvad-som-helst omkring div'en - incl.
>> bredden. Du giver div'en et "id" og kan så ændre dens style med
>> javascript
>> (evt. genereret af din php kode):
>>
>> document.getElementById("mydiv").style.width = "500px";
>
> Når du benytter document.getElementById("mydiv"), får du så ikke kun fat i
> div'en med den pågældende id? Mit problem er netop, at jeg ønsker at ændre
> i
> en hel klasse, så flere divs bliver påvirket.

Jo korrekt, men jeg havde jo i det hele taget misforstået din "eksternt
stylesheet". Jeg troede at du mente "et stylesheet som jeg ikke selv laver
men som jeg låner ude i byen".

Du laver formentlig selv stylesheet'et ? i givet fald så skriver du bare
hvad du har brug for i det. Det kan genereres som fil via php eller du kan
lave dit stylesheet link som andre tidligere har skrevet:

<LINK href="my_stylesheet_generator.php" rel="stylesheet" type="text/css">

Carsten



Phecdaret (17-11-2008)
Kommentar
Fra : Phecdaret


Dato : 17-11-08 18:00

Carsten wrote in dk.edb.internet.webdesign.serverside.php:
> "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
> news:49217dea$0$90266$14726298@news.sunsite.dk...
> > Carsten wrote in dk.edb.internet.webdesign.serverside.php:
> >> "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
> >> news:491e80b8$0$90269$14726298@news.sunsite.dk...
> >> > Jeg ønsker at ændre "width" for en div-klasse i et ekstern
> >> > stylesheet på baggrund af nogle beregninger i php. Kan dette lade
> >> > sig gøre?
> >>

>
> Jo korrekt, men jeg havde jo i det hele taget misforstået din "eksternt
> stylesheet". Jeg troede at du mente "et stylesheet som jeg ikke selv laver
> men som jeg låner ude i byen".

Jeg har nok formuleret mig lidt uklart, det beklager jeg.

>
> Du laver formentlig selv stylesheet'et ?
Ja, det gør jeg.

i givet fald så skriver du bare
> hvad du har brug for i det. Det kan genereres som fil via php eller du kan
> lave dit stylesheet link som andre tidligere har skrevet:
>
> <LINK href="my_stylesheet_generator.php" rel="stylesheet" type="text/css">

Det her er lige præcis løsningen på mit problem. Det er også blevet foreslået
længere nede i tråden :) Irriterende jeg ikke vidste, at stylesheets kan generes
med php, men man skal jo lære lidt engang imellem ;)

>
> Carsten
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Carsten (17-11-2008)
Kommentar
Fra : Carsten


Dato : 17-11-08 19:11

"Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
news:4921a31c$0$90276$14726298@news.sunsite.dk...
> Det her er lige præcis løsningen på mit problem. Det er også blevet
> foreslået
> længere nede i tråden :) Irriterende jeg ikke vidste, at stylesheets kan
> generes
> med php, men man skal jo lære lidt engang imellem ;)

Vær opmærksom på, at alt efter hvordan du laver dit "stylesheet.php" så kan
det være at browseren aldrig cacher det (alternativt cacher det selvom det
har ændret sig). Der har lige været en tråd om netop det emne,

Carsten



Phecdaret (17-11-2008)
Kommentar
Fra : Phecdaret


Dato : 17-11-08 20:06

Carsten wrote in dk.edb.internet.webdesign.serverside.php:
> "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
> news:4921a31c$0$90276$14726298@news.sunsite.dk...

> Vær opmærksom på, at alt efter hvordan du laver dit "stylesheet.php" så kan
> det være at browseren aldrig cacher det (alternativt cacher det selvom det
> har ændret sig). Der har lige været en tråd om netop det emne,

Hej igen Carsten,

Jeg har læst tråden igennem, og må jo nok indrømme, at det er en diskussion,
der går lidt hen over mit hoved.

Du skriver selv, at du kod serveren tjekke din liste af kunder, før du skrev
den til text.css. Kan du givet et hint til, hvilken php funtion jeg skal
undersøge nærmere til dette formål? Sådan som jeg har forstået jeg råd, så gør
jeg nu følgende:

1. Ændrer mit stylesheet.css til stylesheet.php
2. Ét sted sted i stylesheet'et sætter jeg bredde lig <?php $breddevariabel
?>

Hvordan dette fungerer i forhold til cache, har jeg absolut ingen idé om.
Bredden i stylesheet'et bliver kun ændret, når brugeren ønsker et andet antal
topics på siden: så bliver siden reloaded med det nye antal i en query string.
Hver gang siden loades (uden værdi i query-string), så sættes $breddevariabel
til en standard-værdi.




>
> Carsten
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Carsten (17-11-2008)
Kommentar
Fra : Carsten


Dato : 17-11-08 22:58

"Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
news:4921c096$0$90267$14726298@news.sunsite.dk...
> undersøge nærmere til dette formål? Sådan som jeg har forstået jeg råd, så
> gør
> jeg nu følgende:
>
> 1. Ændrer mit stylesheet.css til stylesheet.php
> 2. Ét sted sted i stylesheet'et sætter jeg bredde lig <?php
> $breddevariabel
> ?>

Korrekt - det er i hvert fald een måde at gøre det på.

> Hvordan dette fungerer i forhold til cache, har jeg absolut ingen idé om.

Fungerer ikke sååå godt, idet browseren hele tiden får at vide, at
stylesheet'et er "nyt" og derfor loader det fra serveren hver gang "index"
siden tilgåes. En bedre løsning er kun at skrive en ny stylesheet fil når
der er grund til det (i mit tilfælde når der var en ny kundetype, i dit
tilfælde desværre alt for tit).

> Bredden i stylesheet'et bliver kun ændret, når brugeren ønsker et andet
> antal
> topics på siden: så bliver siden reloaded med det nye antal i en query
> string.

i så fald ville jeg nok tage "bredden" ud af stylesheet class'en og så
angive den der hvor den skulle bruges - også selvom det betød at den skulle
angives flere steder. Altså lidt a la det jeg skrev i starten af tråden.

Carsten



Phecdaret (17-11-2008)
Kommentar
Fra : Phecdaret


Dato : 17-11-08 23:13

Carsten wrote in dk.edb.internet.webdesign.serverside.php:
> "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
> news:4921c096$0$90267$14726298@news.sunsite.dk...

> Fungerer ikke sååå godt, idet browseren hele tiden får at vide, at
> stylesheet'et er "nyt" og derfor loader det fra serveren hver gang "index"
> siden tilgåes. En bedre løsning er kun at skrive en ny stylesheet fil når
> der er grund til det (i mit tilfælde når der var en ny kundetype, i dit
> tilfælde desværre alt for tit).

Lige et sidste spørgsmål. Når du siger, at det ikke fungerer så godt, er det så
fordi, at siden til tider ikke vil blive vist rigtigt, eller er det fordi, at
løsningen gør visningen langsomere, da stylesheet'et hele tiden skal hentes?

> i så fald ville jeg nok tage "bredden" ud af stylesheet class'en og så
> angive den der hvor den skulle bruges - også selvom det betød at den skulle
> angives flere steder. Altså lidt a la det jeg skrev i starten af tråden.

Jeg skal bare være helt med: når vi helst vil undgå denne løsning, så er det
fordi, at in-line styling er fy fy, ikke? Det mener jeg, jeg har fået at vide en
gang eller to her i forummet ;)



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Carsten (18-11-2008)
Kommentar
Fra : Carsten


Dato : 18-11-08 07:11

"Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
news:4921ec7a$0$90272$14726298@news.sunsite.dk...

> Lige et sidste spørgsmål. Når du siger, at det ikke fungerer så godt, er
> det så
> fordi, at siden til tider ikke vil blive vist rigtigt, eller er det fordi,
> at
> løsningen gør visningen langsomere, da stylesheet'et hele tiden skal
> hentes?

Ja, korrekt - visning bliver langsom da både "index" siden og stylesheet'et
vil blive hentet hver gang. Hvis den samlede størrelse af de to elementer er
lille så er det ok, men du har tidligere skrevet, at grunden til at du ikke
har <style> i selve index siden er at det var et stort stylesheet.

> Jeg skal bare være helt med: når vi helst vil undgå denne løsning, så er
> det
> fordi, at in-line styling er fy fy, ikke? Det mener jeg, jeg har fået at
> vide en
> gang eller to her i forummet ;)

Det er der måske nok nogen religion om ja men hvad vil du helst have ?
dårlig loadtid eller *lidt* grim kode

Carsten



Jørn Andersen (18-11-2008)
Kommentar
Fra : Jørn Andersen


Dato : 18-11-08 09:44

On 17 Nov 2008 22:13:14 GMT, Phecdaret <phecdaret@gmail.com> wrote:

>Jeg skal bare være helt med: når vi helst vil undgå denne løsning, så er det
>fordi, at in-line styling er fy fy, ikke? Det mener jeg, jeg har fået at vide en
>gang eller to her i forummet ;)

Inline style er ikke fy-fy, men ovedreven inline style er fy-fy.

Jeg bruger som regel:
1. Eksternt stylesheet til den del af formatteringen, som skal bruges af
flere sider.
2. Internt (eller embedded) stylesheet (det mellem <style> og </style>)
til det der kun hører til samme dokument.
3. Inline style (<p style="..."> ... </p>) til ting, der lige skal
rettes til enkelte steder - eller hvis det er mest praktisk fra
serverside-sider.

Jo bedre man har struktureret sine sider, jo mere har man i 1 - og jo
mindre i 3.


Mvh. Jørn

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

David Konrad (15-11-2008)
Kommentar
Fra : David Konrad


Dato : 15-11-08 11:53

Phecdaret wrote:
> Hej alle,
>
> Jeg ønsker at ændre "width" for en div-klasse i et ekstern
> stylesheet på baggrund af nogle beregninger i php. Kan dette lade
> sig gøre?

Du skal gøre dette med javascript.

Du gør følgende

1. Din <div> skal have et id, f.eks
<div class=klasse_fra_dit_eksterne_CSS id="dynamicDiv"> {indhold] </div>

2. Ved din "beregning" i PHP skriver du en skjult <div> på siden, som
indeholder resultatet, dvs width, f.eks har du beregnet bredden til 500

<div id="calculatedWidth" style="display:hidden;">500</div>

3. Du laver en function i javascript, der tager indholdet af calculatedWidth
og sætter den til at være dynamicDiv's width

function updateWidth() {
document.getElementById("dynamicDiv").style.width =
document.getElementById("calculatedWidth").innerHTML;
}

4. Du kalder functionen i body onload
<body onLoad='updateWidth();'>



Phecdaret (17-11-2008)
Kommentar
Fra : Phecdaret


Dato : 17-11-08 15:25

David Konrad wrote in dk.edb.internet.webdesign.serverside.php:
> Phecdaret wrote:

> function updateWidth() {
> document.getElementById("dynamicDiv").style.width =
> document.getElementById("calculatedWidth").innerHTML;
> }

Ændrer dette kun bredde for én div og ikke en hel klasse, som jeg er
interesseret i?




--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

David Konrad (20-11-2008)
Kommentar
Fra : David Konrad


Dato : 20-11-08 05:16

Phecdaret wrote:
> David Konrad wrote in dk.edb.internet.webdesign.serverside.php:
>> Phecdaret wrote:
>
>> function updateWidth() {
>> document.getElementById("dynamicDiv").style.width =
>> document.getElementById("calculatedWidth").innerHTML;
>> }
>
> Ændrer dette kun bredde for én div og ikke en hel klasse, som jeg er
> interesseret i?

Jo, det har du ret i. Men så kan man bruge getElementByClass (svjh - er
blevet lidt for prototype.js-fikseret)



Sune Storgaard (15-11-2008)
Kommentar
Fra : Sune Storgaard


Dato : 15-11-08 15:06

"Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
news:491e80b8$0$90269$14726298@news.sunsite.dk...
> Hej alle,
>
> Jeg ønsker at ændre "width" for en div-klasse i et ekstern
> stylesheet på baggrund af nogle beregninger i php. Kan dette lade
> sig gøre?


lav en fil kaldet stylesheet.php:
===================
<?php
header("Content-type: text/css");
$bredde="200px"; /
echo" #specialdiv { border:1px solid red; width:$bredde }";
?>
===================

Index.html:
===================
<html><head>
<LINK href="stylesheet.php" rel="stylesheet" type="text/css">
</head><body>

<div id="specialdiv"> blahblah</div>

</body></html>
===================

Sådan kan det gøres i rent PHP uden javascript



Carsten (15-11-2008)
Kommentar
Fra : Carsten


Dato : 15-11-08 20:54

"Sune Storgaard" <nospam@strueradsl.invaliDK> skrev i en meddelelse
news:491ed6ec$0$90273$14726298@news.sunsite.dk...
> "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
> news:491e80b8$0$90269$14726298@news.sunsite.dk...
>> Hej alle,
>>
>> Jeg ønsker at ændre "width" for en div-klasse i et ekstern
>> stylesheet på baggrund af nogle beregninger i php. Kan dette lade
>> sig gøre?
>
>
> lav en fil kaldet stylesheet.php:
> ===================
> <?php
> header("Content-type: text/css");
> $bredde="200px"; /
> echo" #specialdiv { border:1px solid red; width:$bredde }";
> ?>
> ===================
>
> Index.html:
> ===================
> <html><head>
> <LINK href="stylesheet.php" rel="stylesheet" type="text/css">
> </head><body>
>
> <div id="specialdiv"> blahblah</div>
>
> </body></html>
> ===================
>
> Sådan kan det gøres i rent PHP uden javascript

Korrekt, men spørgeren skriver specifikt, at stylesheet'et ikke er hans
eget - det er et "ekstern stylesheet", hvilket jeg tolker som at spørgeren
ikke selv er herre over hvad der skal stå i det.

Carsten



Johan Holst Nielsen (15-11-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 15-11-08 21:06

Carsten wrote:
> Korrekt, men spørgeren skriver specifikt, at stylesheet'et ikke er hans
> eget - det er et "ekstern stylesheet", hvilket jeg tolker som at spørgeren
> ikke selv er herre over hvad der skal stå i det.

Men eksternt stylesheet opfatter jeg som et css dokument der enten er
refereret via <link> tag eller @import.

interne css er hvis du skriver css'en direkte i HTML'en - enten inline
eller via <style type="text/css"> bla bla </style>

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Philip Nunnegaard (16-11-2008)
Kommentar
Fra : Philip Nunnegaard


Dato : 16-11-08 11:14

"Carsten" <carsten@noexists.dk> skrev

> Korrekt, men spørgeren skriver specifikt, at stylesheet'et ikke er hans
> eget - det er et "ekstern stylesheet", hvilket jeg tolker som at spørgeren
> ikke selv er herre over hvad der skal stå i det.

Johan holst skriver at "eksternt stylesheet" bare betyder at det ikke ligger
direkte i html-filen.

I mit ordforråd er der 3 slags css:

1) Inline css: Det skrives direkte i html-koden.
<span style="color:#f00;">Tekst</span>

2) Intern css: CSS-koden skrives i samme html-fil, mellem <head> og </head>
3) Ekstern css el. eksternt stylesheet: CSS-koden ligger i en css-fil, og
denne linkes der til fra html-filen.


Erik Ginnerskov (16-11-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 16-11-08 13:23

Carsten wrote:

> Korrekt, men spørgeren skriver specifikt, at stylesheet'et ikke er
> hans eget

Nej, det skriver han ikke noget om. Jeg tilslutter mig Johans og Philips
tolkning.

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


Phecdaret (17-11-2008)
Kommentar
Fra : Phecdaret


Dato : 17-11-08 15:31

Carsten wrote in dk.edb.internet.webdesign.serverside.php:
> "Sune Storgaard" <nospam@strueradsl.invaliDK> skrev i en meddelelse
> news:491ed6ec$0$90273$14726298@news.sunsite.dk...
> > "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse

>
> Korrekt, men spørgeren skriver specifikt, at stylesheet'et ikke er hans
> eget - det er et "ekstern stylesheet", hvilket jeg tolker som at spørgeren
> ikke selv er herre over hvad der skal stå i det.

Nej, stylesheet'et er skam mit eget, og jeg har fuld kontrol over det. Siden
bliver bare for stor, hvis jeg har det i headeren, så derfor har jeg linket
til det eksternt.

>
> Carsten
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Phecdaret (17-11-2008)
Kommentar
Fra : Phecdaret


Dato : 17-11-08 15:29

Sune Storgaard wrote in dk.edb.internet.webdesign.serverside.php:
> "Phecdaret" <phecdaret@gmail.com> skrev i en meddelelse
> news:491e80b8$0$90269$14726298@news.sunsite.dk...
> > Hej alle,

> lav en fil kaldet stylesheet.php:
> ===================
> <?php
> header("Content-type: text/css");
> $bredde="200px"; /
> echo" #specialdiv { border:1px solid red; width:$bredde }";
> ?>
> ===================
>
> Index.html:
> ===================
> <html><head>
> <LINK href="stylesheet.php" rel="stylesheet" type="text/css">
> </head><body>
>
> <div id="specialdiv"> blahblah</div>
>
> </body></html>
> ===================
>
> Sådan kan det gøres i rent PHP uden javascript

Super smart! Men jeg kan ikke helt gennemskue, hvad det har af
konsekvenser for mit nuværende eksterne stylesheet, som jeg allerede
linker til. Skal jeg bare ændre filen fra .css til .php uden videre,
og så fungerer det?


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Johan Holst Nielsen (17-11-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 17-11-08 15:56

Phecdaret wrote:
> Super smart! Men jeg kan ikke helt gennemskue, hvad det har af
> konsekvenser for mit nuværende eksterne stylesheet, som jeg allerede
> linker til. Skal jeg bare ændre filen fra .css til .php uden videre,
> og så fungerer det?

Jah - i 99/100 tilfælde...

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31962
Nyheder : 719565
Indlæg : 6408176
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste