Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2008, 10h46   #1
Futur Membre du Club
 
Inscription : mai 2008
Messages : 25
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 25
Points : 17
Points : 17
Par défaut php et css dynamique

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

Code :
href="test_css.php?couleur=blue&&couleur1=red"
ça marche

par contre si vous écrivez un truc de ce genre
Code :
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
Code :
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

Code :
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

Code :
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
persanbleue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2008, 11h58   #2
Membre Expert
 
Avatar de Jumano
 
Inscription : février 2007
Messages : 1 162
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 1 162
Points : 1 369
Points : 1 369
Bonjour,
C'est le caractère "#" qui pause problème.
Une solution serait de déclarer la variable sans ce caractère comme ceci :
Code :
<?php $mavariable="AABBCC"; ?>
et ensuite de faire comme ceci dans ton fichier test_css.php :
Code :
body { background-color: #<?php echo $couleur ; ?> ; }
Jumano est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h09.


 
 
 
 
Partenaires

Hébergement Web