2009-09-07 7 views
0

Iam essayant d'extraire des données de la base de données mysql dans stylesheet.php mais cela ne fonctionne pas.dynamic stylesheet

page principale:

<link rel="stylesheet" href="includes/dynamicstyle.php" media="screen"> 

stylesheet.php

<?php header("Content-type: text/css;"); ?> 
<?php 
require 'connect.php'; 
$userid = $_SESSION['uid']; 
$select_query = "SELECT * FROM theme where user_id = $userid"; 


$primaryTextColor = '#336600'; 
$secondaryTextColor = '#fff'; 
$tertiaryTextColor = '#555'; 
$primaryBGColor = '.$background.'; 
$secondaryBGColor = '#ccc'; 
$tertiaryBGColor = '#000'; 
$primaryTextSize = '10'; //pixels 
?> 
#pro_theme{ 
color: <?php echo $primaryTextColor?>; 
background: <?php echo $primaryBGColor?>; 

} 
#con_theme { 
background: <?php echo $secondaryBGColor?>; 
font-size: <?php echo 1.1*$primaryTextSize ?>px; 
} 
#des_theme{ 
background: <?php echo $secondaryBGColor?>; 
font-size: <?php echo 1.1*$primaryTextSize ?>px; 
} 
#basic{ 
background: <?php echo $secondaryBGColor?>; 
} 
<?php 
$result_select = mysql_query($select_query)or die(mysql_error()); 
if ($result_select){ 
     $row = mysql_fetch_assoc($result_select); 
     $background = $row['background']; 

    } 
?> 

Il ne fonctionne pas pour moi, je veux juste savoir est qu'une bonne façon de faire ou est-il quelque chose de mieux de Ce faisant.

merci.

Edit:

Merci pour les conseils, son travail maintenant.

+0

Avez-vous envisagé de mettre le point-virgule pour marquer la fin de ces instructions 'echo'? – random

+1

parfois il suffit d'appeler le script avec votre navigateur pour voir les erreurs ... – janoliver

+0

n'avez-vous pas besoin d'espace avant '?>'? – Aziz

Répondre

3

Cette ligne est un peu déroutant:

$primaryBGColor = '.$background.'; 

Cela signifie que vous serez toujours ce exportez:

#pro_theme{ 
color: #336600; 
background: .$background.; 
} 

La meilleure façon d'être mise au point est d'ouvrir simplement ce fichier dans le navigateur (http://mysite/includes/dynamicstyle.php) afin que vous puissiez voir la sortie clairement. Vous ne mettez pas du tout la valeur d'arrière-plan en $ dans la sortie

3

vous générez la chaîne .$background. (qui n'est pas développée, car elle est entre guillemets simples) dans votre sortie. Ensuite, après que cela a déjà été envoyé au navigateur (ou au moins tamponné pour être envoyé), vous définissez une variable nommée $ background.

Vous devez définir $ background avant de générer votre fichier css, et vous devrez modifier votre devis, donc $ background est développé quelque part dans votre sortie.

En outre, il semblerait que vous bénéficieriez d'un meilleur moyen de coller des variables dans votre sortie CSS. Comme l'a suggéré Lucky, heredoc pourrait bien fonctionner ici.

En outre, il ne fait jamais de mal d'avoir type = "text/css" dans le tag. Peut-être même exigé par les spécifications, j'oublie.