0

わかりましたので、MYSQL データベースによって駆動される動的 CSS に関する以前の質問を改善しようとしています。私はこれを1つの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 に答える