2012-05-19 65 views
0

好的,所以我想改进我之前关于由MYSQL数据库驱动的动态CSS的问题。我已经得到了这个工作的一个CSS类,但不是超过一个。我试图做的是把一个while语句放在另一个语句里面。我的数据库由这个目前:动态数据库驱动的CSS 2.0

table styles 
id - class - style - setting - page 
1 header width 1000px index 
2 header height 200px  index 
3 footer width 1000px index 

我的代码如下:

$pname = $_SERVER['REQUESTED_URI']; 
$class_query = mysql_query("SELECT DISTINCT(class) AS class FROM styles WHERE pname='".$pname."'"); 
$style_query = mysql_query("SELECT style, setting FROM styles WHERE pname='".$pname."' AND class='".$class_result['class']."'"); 
echo "<style>"; 
while($class_result_row = mysql_fetch_array($class_query,MYSQL_ASSOC)) { 
    echo ".".$class_result_row['class']."{"; 
    while($style_result_row = mysql_fetch_array($style_query,MYSQL_ASSOC)) { 
     echo $style_result_row['style'].":".$style_result_row['setting'].";"; 
    } 
    echo "}"; 
} 
echo "</style>"; 

这个伟大的工程为索引内容,但它并不显示页脚样式。这和我之前在这里提到的主要区别在于,不是为每个页面手动设置相同的脚本来加载页面特定的内容,我想将它包装在一个函数中,并在标题中调用一次用它完成。我也尝试为页面名称设置$ GLOBALS和$ SESSION变量,但结果相同。 在侧面说明我也使用了没有额外的引号和句点的变量,也得到了相同的结果。在此先感谢大家! - 约翰

+0

另外,可能有更好的方法来解决动态样式化页面的问题。我不知道你的目标是什么,但是这个解决方案可能不会更难以维护,它可以增加页面大小,并且不允许浏览器在CSS没有改变的情况下缓存CSS。考虑每页使用CSS文件(即为“索引”页面加载的“index.css”等)。您还可以构建CSS页面的层次结构 - 一个用于页面结构(页眉,页脚等)和其他用于页面特定样式的页面。 – dariom

回答

1

我觉得每次迭代类查询结果时都必须执行样式查询。尝试类似于:

$pname = $_SERVER['REQUESTED_URI']; 
$class_query = mysql_query("SELECT DISTINCT(class) AS class FROM styles WHERE pname='".$pname."'"); 
echo "<style>"; 
while($class_result_row = mysql_fetch_array($class_query,MYSQL_ASSOC)) { 
    echo ".".$class_result_row['class']."{"; 
    $style_query = mysql_query("SELECT style, setting FROM styles WHERE pname='".$pname."' AND class='".$class_result_row['class']."'"); 

    while($style_result_row = mysql_fetch_array($style_query,MYSQL_ASSOC)) { 
     echo $style_result_row['style'].":".$style_result_row['setting'].";"; 
    } 
    echo "}"; 
} 
echo "</style>"; 
+0

这就是我第一次来这里的原因!谢谢sooooo很多,这一直困扰着我现在一周。我知道有一种更简单的方式来称呼它,并且很高兴看到我使用的命令这次是正确的......只是将它们放在他们所属的地方。 –

+0

没问题。我很高兴我可以帮助:-)看到我的评论,我加入你的问题,仔细想想这是否真的是你想要的方法。如果您想了解更多其他方法,请提出另一个问题! – dariom

+0

大声笑,我绝对会问更多!我在这方面做了很多想法,现在这似乎是我能想出的最佳答案。我正在构建我自己的游戏/论坛/社交网站,并且很多网页都会有类似的框架,但每个元素的推文都不相同。如使用相同页面的已登录区域和未登录区域。我的header.php是我调用这个函数的地方,我已经在数据库中设置了超出我为这个例子输入的内容。完成后它应该很棒,后端可以随时更改设置 –