动态样式表

时间:2009-09-07 23:39:52

标签: php

我试图将数据从mysql数据库检索到stylesheet.php但它无法正常工作。

主页:

<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'];

    }
?>

这对我不起作用,我只是想知道这是一种正确的方法,还是有更好的方法。

感谢。

编辑:

感谢您的建议,现在正在开展工作。

2 个答案:

答案 0 :(得分:3)

这一行有点令人困惑:

$primaryBGColor = '.$background.';

这意味着您将始终输出:

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

调试此方法的最佳方法是在浏览器中打开此文件(http://mysite/includes/dynamicstyle.php),以便清楚地看到输出。

答案 1 :(得分:3)

你根本没有将$ background值放入输出中。你输出字符串.$background.(它没有扩展,因为它是单引号)。然后,在此之后已经发送到浏览器(或至少缓冲要发送),您设置一个名为$ background的变量。

在输出css之前,您需要设置$ background,并且需要更改引号,因此$ back会在输出中的某处展开。

此外,您似乎可以从更好的方式将变量粘贴到CSS输出中。幸运的是,heredoc可能在这里运作良好。

此外,标签中的type =“text / css”永远不会受到伤害。甚至可能是规范所要求的,我忘了。