CSS dynamique et variables

Résolu
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
Configuration: Windows XP
Safari 525.26.13

12 réponses

  1. Peux-tu nous copier/coller le code complet de quelque chose ne fonctionne pas comme tu voudrais ?
    0
    1. J'ai du mal à comprendre ta phrase, tu veux le code CSS complet ?
      0
      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;
        }
        ');
        ?>
        0
        1. 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"].';
          0
          1. J'avais pensé à méthode mais je pense que si je veux pouvoir tous modifier cela risque de faire un peu long ?!!!
            0
            1. 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.
              0
              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;
                }
                ');
                }
                ?>
                0
                1. 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é.
                  0
                  1. Y'a bug dans mon code ???? car sur mes autres pages pour afficher des actualites j'utilise la même chose
                    0
                    1. Ca marche en passant les paramètres en GET ou pas ?
                      0
                      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
                        0