Je voudrais à partir d'un programme php
modifier le contenu d'un fichier css
J'ai posé cette question également dans la rubrique css.
Ce petit script trés simple envoi deux variables par la méthode get à mon script css.php. Celui ci est chargé de modifier à la volée des css grâce aux variables envoyées par un formulaire. Pour l'instant mon soucis et que je n'arrive par à envoyer correctement des variables définis par php dans le lien qui est chargé de créer la css. Çà ne fonction qu'en dur et uniquement si je transmets des variables red, blue , yellow et pas le code hexadécimal correspondant à une vraie couleur ( de la forme #FFAABB par exemple)
Je vous joins les deux scripts . Il suffit de les installer sur un petit serveur web , type wamp. Si vous changez le paramètre en dur dans cette ligne
href="test_css.php?couleur=blue&&couleur1=red"
ça marche
par contre si vous écrivez un truc de ce genre
1 2
| $mavariable="#AABBCC";
href="test_css.php?couleur=<?php echo $mavariable?> |
Ca ne marche pas
Cette astuce permettait de généraliser ce script pour faire un générateur de css universel ou tous les paramètres pour raient être modifiés à volée. très utile dans le cadre d'une customisation d'un site par une base de donnée tierce
le script fonction en partie
test.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS dynamique</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen"
type="text/css"
title="Exemple"
href="test_css.php?couleur=blue&&couleur1=red" />
</head>
<body>
<p>texte</p>
<form action="pagecss.php" method="post">
<div>
<input name="couleurfond" value="150" type="radio" />rouge
<input name="couleurfond" value="300" type="radio" />jaune
<br /><input class="submit" value="Sélectionner" type="submit" />
</div>
<div class="taille">toto</div>
</body>
</html> |
test_css.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <?php
header("Content-type: text/css");
if (isset($_GET['couleur']))
{
$couleur = $_GET['couleur'];
$couleur1 =$_GET['couleur1'];
if($couleur==1)
{
$couleur='#Aeeee';
}
else
{
$couleur='#DDBBCC';
}
}
else
{
$couleur= 'papa';
}
?>
body {
echo $couleur;
background-color:<?php echo $couleur ?>;
}
.taille {
background:<?php echo $couleur1 ?> ;
font-size:<?php echo $taille ?>
} |
ce script marche si je code les couleurs en dur et avec le nom de la couleur
je peux dire que couleur= bleu, rouge , pink le paramètre passé marchera parfaitement dans le fichier css.php
qui génère la feuille de style et que je décrits ci après
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?php
header("Content-type: text/css");
if (isset($_GET['couleur']))
{
$couleur = $_GET['couleur'];
$couleur1 =$_GET['couleur1'];
if($couleur==1)
{
$couleur='#AABBCC';
}
else
{
$couleur='#DDBBCC';
}
}
else
{
$couleur= 'papa';
}
?>
body {
background-color:<?php echo $couleur ?>;
}
.taille {
background:<?php echo $couleur1 ?> ;
font-size:<?php echo $taille ?>
} |
comment arriver à modifier les variables du fond qui peuvent prendre plusieurs milliers de couleurs
L'intérêt est de pouvoir paramétrer une css sans toucher au code
avez vous une piste pour gérer ce probléme
Merci beaucoup
Partager