CSS dynamique et variables

[Résolu/Fermé]
Signaler
Messages postés
27
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
13 mai 2009
-
Messages postés
27
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
13 mai 2009
-
Bonjour,

J'ai un créé un css dynamique via php en l'appellant via :
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="monsite.com/fichiers/site/design/principal.php" />

et en mettant à l'intérieur :
<?php
header("Content-type:text/css; charset=iso-8859-1");
echo('
body {
	background:url(monsite.com/fond.png) no-repeat center top;
	background-color:#525252;
	color:#FFFFFF;
	font-family:tahoma; font-size:10pt;
	margin:0px;
	text-align:center;
}
');
?>

Jusque là tout marche mais quand je remplace une couleur par une variable :
background-color:' . $couleur . '

Le problème c'est que après certaines choses ne marche plus comme le fond mais d'autre chose marche comme la mise en forme de puces pour un menu.

Je ne comprends pas pourquoi ?

D'avance merci de votre aide

12 réponses

Peux-tu nous copier/coller le code complet de quelque chose ne fonctionne pas comme tu voudrais ?
Messages postés
27
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
13 mai 2009
1
J'ai du mal à comprendre ta phrase, tu veux le code CSS complet ?
Oui voilà.
Messages postés
27
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
13 mai 2009
1
Voilà :

<?php
header("Content-type:text/css; charset=iso-8859-1");
echo('
body {
background:url(http://127.0.0.1/Atelier%20de%20la%20Foulque/fichiers/img/fond/fond.png) no-repeat center top;
background-color:#525252;
color:#FFFFFF;
font-family:tahoma; font-size:10pt;
margin:0px;
text-align:center;
}
a {
color:#FFFFFF;
text-decoration:none;
}
a:hover {
text-decoration:underline;
}
img {
border:0px;
}
.menu {
margin: 0;
padding: 0;
list-style: none;
text-align:justify;
}
.menu a {
display: block;
padding: 4px 10px;
text-decoration: none;
}
.menu .sousmenu {
font-size: 10pt;
margin: 0;
padding: 0;
list-style: none;
}
.menu ul.sousmenu a {
background: none;
color:#525252;
padding: 3px 20px;
}
');
?>
Oulah. J'étais sur une fausse piste, je viens de comprendre ton problème :)
Désolé.
Donc, une solution "simple" serait d'utiliser pour l'inclusion de ton css dynamique :
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="monsite.com/fichiers/site/design/principal.php?couleur=004400" />

Et dans le fichier CSS quelque chose comme :
background-color: #'.$_GET["couleur"].';
Messages postés
27
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
13 mai 2009
1
J'avais pensé à méthode mais je pense que si je veux pouvoir tous modifier cela risque de faire un peu long ?!!!
Oui mais tu n'as guère d'autres moyens de faire passer des paramètres de la page vers le css.
Ils ne sont pas appelés en même temps du serveur web, et sont donc vus de manière indépendante pour lui.
Il ne peut utiliser les variables d'un fichier dans l'autre.
Il y a d'autres solutions, comme stocker les infos sur une base de données ou dans un fichier du serveur web, mais c'est aussi moins flexible.
Pour la longueur de l'url, normalement tu as de la place, tu peux y aller.
Messages postés
27
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
13 mai 2009
1
Moi ça ne me gène pas de les stocker dans mysql mais cela ne marche pas :
<?php
header("Content-type:text/css; charset=iso-8859-1");
$query = mysql_query("SELECT * FROM css");
if($css = mysql_fetch_assoc($query))
{
echo('
body {
	background:url(monsite.com/fichiers/img/fond/fond.png) no-repeat center top;
	background-color:#525252;
	color:#' . $css['couleur'] . ';
	font-family:tahoma; font-size:10pt;
	margin:0px;
	text-align:center;
}

a {
	color:#FFFFFF;
	text-decoration:none;
}

a:hover {
	text-decoration:underline;
}

img {
	border:0px;
}

.menu {
margin: 0;
padding: 0;
list-style: none;
text-align:justify;

}
.menu a {
display: block;
padding: 4px 10px;

text-decoration: none;

}
.menu .sousmenu {
font-size: 10pt;
margin: 0;
padding: 0;
list-style: none;
}
.menu ul.sousmenu a {
background: none;
color:#525252;
padding: 3px 20px;
}
');
}
?>
Si ça ne marche pas avec mysql, c'est sûrement que l'enregistrement de la valeur s'est mal passé ou que la façn d'interroger la base n'est pas la bonne. Ca ne vient pas du procédé.
Messages postés
27
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
13 mai 2009
1
Y'a bug dans mon code ???? car sur mes autres pages pour afficher des actualites j'utilise la même chose
Ca marche en passant les paramètres en GET ou pas ?
Messages postés
27
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
13 mai 2009
1
C'est bon ça marche.
Juste une dernière chose, afficher des valeurs via php/mysql cela prend plus de temps que si elles étaient écrites directement. Mais cela prend beaucoup de temps, est-ce que ça allourdi pas trop les pages ???? car au total je dois avoir 100 viariables sans le CSS dynamique