我试图将数据从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'];
}
?>
这对我不起作用,我只是想知道这是一种正确的方法,还是有更好的方法。
感谢。
编辑:
感谢您的建议,现在正在开展工作。
答案 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”永远不会受到伤害。甚至可能是规范所要求的,我忘了。