[CSS/PHP] variabelen in CSS ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey,

Ik ben een site aan t fixen met PHP. ik heb er voor gekozen om met stylesheets te werken.

hier is een voorbeeld:

BODY { font-family: Verdana, Courier;
font-size: 12px;
color: #000000; }

Ik wil er voor zorgen dat alle waardes in het style sheet (in het vb Verdana enz.)
veriabel zijn, zodat ik ze met een database en een formuliertje kan wijzigen, zonder in het .css bestand te moeten.

ik heb de volgende code al geprobereerd:

mysql_connect("$hostname", "$db_user", "$db_password")
or die ("could not connect to localhost");

mysql_select_db("$db_name", "$conn")
or die ("Cannot connect to database");

$query = "select * from style"
or die ("something wrong with the database");

$result = mysql_query($query)
or die ("something wrong with the database");

$obj = mysql_fetch_object($result)
or die ("something wrong with the database");

$body_font = "$obj->body_font";

en dan de volgende stylesheet code:

BODY { font-family: <?PHP echo "$body_font" ?>;
font-size: <?PHP echo "$body_font_size" ?>;
color: <?PHP echo "$body_font_color" ?>; }


dit heeft helaas geen effect..

heeft iemand een idee hoe ik dit probleem het beste kan oplossen?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

erhm.. Wat doet het dan niet?

"Het heeft geen effect" is nogal vaag.....

Foutmeldingen, HTML-output, etc. maken het een stuk duidelijker.

Evenals het gebruik van [code=php][/code] tags.

[ Voor 22% gewijzigd door gorgi_19 op 18-06-2003 14:46 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kk.. mb.

als ik dan het .css met de code <link rel="stylesheet" href="../style/style.css" type="text/css"> in de head zet, en als ik dan bijvoorbeeld iets type als

<body>
test
</body>

dan zou de tekst 'test' het lettertype moeten hebben van wat er in de database staat, in dit geval verdana. dit is niet het geval. Ik zie gewoon de standaart font. :S

[ Voor 12% gewijzigd door Verwijderd op 18-06-2003 14:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Hoe ziet je database eruit?

style (style_id, body_font, ...)
of
style (style_id, style_name, style_value)

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 was eik meer benieuwd naar de output van de css...

Waarschijnlijk ligt het er aan dat .css niet geparsed wordt door de PHP parser
Verander de extentsie van .css in .php.
Vergeet verder niet om bovenaan nog de juiste header toe te voegen voor de stylesheet.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mm, ik denk dat daar het probleem niet zit...

$query = "create table style (

body_font text not null,
body_font_color text not null,
body_font_size text not null,
titel_color text not null,
titel_font text not null,
enz enz


zo heb ik de db_table aangemaakt, en met PHP my admin zie ik ook duidelijk de goede waarden staan..

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 18 juni 2003 @ 14:52:
mm, ik denk dat daar het probleem niet zit...

$query = "create table style (

body_font text not null,
body_font_color text not null,
body_font_size text not null,
titel_color text not null,
titel_font text not null,
enz enz


zo heb ik de db_table aangemaakt, en met PHP my admin zie ik ook duidelijk de goede waarden staan..
Das bovendien nog een verkeerd database design, imho, maar da's een ander verhaal... :) Die van Cheatah vind ik dan mooier. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

gorgi_19 schreef op 18 juni 2003 @ 14:50:
* gorgi_19 was eik meer benieuwd naar de output van de css...

Waarschijnlijk ligt het er aan dat .css niet geparsed wordt door de PHP parser
Verander de extentsie van .css in .php.
Vergeet verder niet om bovenaan nog de juiste header toe te voegen voor de stylesheet.
Ik denk idd dat hier het probleem in zit. Probeer dit eens aan te passen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja idd, maar ik ben nog niet zo ervaren met SQL en PHP.... :P

zo ziet mijn header er nu uit:

<link rel="stylesheet" href="../style/style.php" type="text/css">

ik heb het style.css style.php genoemd..

....weer geen effect..

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 18 June 2003 @ 14:56:
ja idd, maar ik ben nog niet zo ervaren met SQL en PHP.... :P

zo ziet mijn header er nu uit:

<link rel="stylesheet" href="../style/style.php" type="text/css">

ik heb het style.css style.php genoemd..

....weer geen effect..
En laat nu de inhoud eens zien als je "HierJeUrl/style/style.php" in je adresbalk tikt.

Kan je een stukje van deze output hier posten?
(En vergeet dan niet de [code=css][/code] te gebruiken.

[ Voor 8% gewijzigd door gorgi_19 op 18-06-2003 15:00 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik pleur hier gewoon even de ingekorte versie van mijn style.php neer:...

in settings.php staan de hostname db_user en zo..

<style type="text/css">

<?PHP

include ("../php/settings.php");

mysql_connect("$hostname", "$db_user", "$db_password")
or die ("could not connect to localhost");

mysql_select_db("$db_name", "$conn")
or die ("Cannot connect to database");

$query = "select * from style"
or die ("something wrong with the database");

$result = mysql_query($query)
or die ("something wrong with the database");

$obj = mysql_fetch_object($result)
or die ("something wrong with the database");

$body_font = "$obj->body_font";
$body_font_color = "$obj->body_font_color";
$body_font_size = "$obj->body_font_size";


?>

<--


BODY { font-family: <?PHP echo "$body_font" ?>;
font-size: <?PHP echo "$body_font_size" ?>;
color: <?PHP echo "$body_font_color" ?>; }


-->

Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

Laat dat stukje code anders een runnen in de header van de bewuste pagina. (pagina met php extensie! :P )
En kijk es in je source hoe je css eruit ziet

Acties:
  • 0 Henk 'm!

Verwijderd

Dit lijkt me gewoon moeten werken. Wat werkt er precies niet? Wat betekend 'geen effect'? Veranderd de css in de file die de browser krijg niet?
-- edit
oeps wel heel erg traag :'(

[ Voor 17% gewijzigd door Verwijderd op 18-06-2003 15:03 ]


Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

* Yo-han is zeer Stupid!!

laat maar... 8)7

[ Voor 89% gewijzigd door Yo-han op 18-06-2003 15:03 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dayoman schreef op 18 juni 2003 @ 15:01:
[...]


...? :?

Staat dit stuk buiten je PHP tags?!!
ja, maar ik heb alle veriabele BINNEN php tags gezet...

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

dayoman schreef op 18 June 2003 @ 15:01:
Staat dit stuk buiten je PHP tags?!!
Erhm.. ja.. Het staat na de ?> -tag.

En kan je de Output geven, welke je het adres van het bestand dat de css moet genereren in je adresbalk zet?
En idd is het, zoals het nu gemaakt is, geen geldig css bestand.

[ Voor 38% gewijzigd door gorgi_19 op 18-06-2003 15:04 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

Je kan het volgende ook even proberen:

code:
1
2
3
4
5
6
7
8
9
<--


BODY { font-family: <?PHP echo $body_font; ?>;
font-size: <?PHP echo $body_font_size; ?>;
color: <?PHP echo $body_font_color; ?>; }


-->


zonder aanhalingstekens dus :)

Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 14:09

Kaastosti

Vrolijkheid alom!

Ik heb iets dergelijks ook eens gedaan, om gebruikers verschillende stijlen te laten kiezen voor een site. Wat ik toen heb gedaan is de stylesheet ook de extensie .php gegeven, zodat deze geparsed wordt.

Binnen dat bestand de SQL verbinding opbouwen (als je dat meerdere keren doet herkent php dit en opent geen nieuwe als deze al bestaat) en de benodigde data ophalen.

Dan, zoals ik meer zie in de replies ongeveer zo gebruiken:
Cascading Stylesheet:
1
2
3
4
5
TAG
{
  property: <?=$row->kleur?>;
  property: <?=$row->stijl?>;
}


Zo is het mij in ieder geval gelukt :)

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 15:09

RM-rf

1 2 3 4 5 7 6 8 9

een external stylkesheet begint niet met comment-tekens ('<!-- -->'); dat is enkel voor interne stylesheets (tussen de style-tags, <style><!-- ... --></style>, om aan te geven dat de content niet geparsed door de html-engine dient te worden)

in Opera en mozilla kun je gwoon de css php-file oproepen (net zou wel zijn om een header("content-type: text/css") te zetten, eventueel kun je daarmee je stylesheet verder debuggen, mochten nog meer problemen optreden:
ik zou dan ook geinteresserd zijn in je $query,
maar principieel ben ikzelf een beetje sceptisch over het idee om stylesheets dynamisch te genereren,

het gaat een beetje in tegen het idee van scheiding en van inhoud en opmaak, en het statische idee van een vaste gecontroleerde layout.
zeker als je php standaard niet cached kost het je ook flink meer laadtijd (alhoewel ook dat je kunt aanpassen met header())

[ Voor 11% gewijzigd door RM-rf op 18-06-2003 15:16 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
..ok

tnx voor alle hulp! ik denk dat ik mee ga met RM_rf's meening wat betreft dynamische stylesheets.

Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 14:09

Kaastosti

Vrolijkheid alom!

Dat snap ik dan weer niet... als je nou voor je hele site een aantal stylesheets hebt die je dmv een backoffice wilt kunnen veranderen? Dan is het toch wel makkelijk om alle data in een database te hebben en dat, door deze te wijzigen, ook waarden in je stylesheet wijzigen. Het scheelt je in ieder geval een hoop tikwerk, aangezien alle namen gelijk zijn en alleen de waarden die je er aan vast koppelt wijzigen.

Als je een gebruiker een stijl wilt laten selecteren voor zijn/haar profiel, zijn dynamische stylesheets zelfs bijna niet meer weg te denken :)

Over de laadtijd valt te discussieren... het is 1 query die je uitvoert en waar je een aantal variabelen uithaalt. De tijd die dat kost om uit te voeren zal niet erg hoog zijn. Cachen is sowieso aan te raden, maakt niet uit waar je mee bezig bent :)

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

Kaastosti schreef op 18 June 2003 @ 15:25:
Dat snap ik dan weer niet... als je nou voor je hele site een aantal stylesheets hebt die je dmv een backoffice wilt kunnen veranderen? Dan is het toch wel makkelijk om alle data in een database te hebben en dat, door deze te wijzigen, ook waarden in je stylesheet wijzigen. Het scheelt je in ieder geval een hoop tikwerk, aangezien alle namen gelijk zijn en alleen de waarden die je er aan vast koppelt wijzigen.

Als je een gebruiker een stijl wilt laten selecteren voor zijn/haar profiel, zijn dynamische stylesheets zelfs bijna niet meer weg te denken :)

Over de laadtijd valt te discussieren... het is 1 query die je uitvoert en waar je een aantal variabelen uithaalt. De tijd die dat kost om uit te voeren zal niet erg hoog zijn. Cachen is sowieso aan te raden, maakt niet uit waar je mee bezig bent :)
Damn wat ben ik het hier mee eens! _/-\o_

En volgens mij moet die snelheid bijna niet te merken zijn als het idd 1 query is die je los laat op MySQL. :P

Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 14:09

Kaastosti

Vrolijkheid alom!

Caching is helemaal verplicht als het om een site gaat waar je veel bezoekers verwacht... anders kan die ene query van je css alsnog veel data gaan genereren. Het is natuurlijk wel weer een extra request naar de db, maar ik verwacht dat het invoeren en selecteren van één stylesheet van de 20 die je bijvoorbeeld hebt gemaakt, een grotere en onduidelijkere actie wordt dan het dynamisch genereren.

Tegenwoordig moet _alles_ toch al dynamisch? :P

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.

Pagina: 1