0

好的,所以我正在尝试改进我之前关于由 MYSQL 数据库驱动的动态 CSS 的问题。我已经让它适用于一个 CSS 类,但不止一个。我想做的是将一个while语句放在另一个语句中。我的数据库目前包含以下内容:

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 变量,但结果是相同的。在旁注中,我还使用了没有额外引号和句点的变量,也得到了相同的结果。提前谢谢大家! - 约翰

4

1 回答 1

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>";
于 2012-05-19T02:46:01.920 回答