2012-05-19 122 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是我調用這個函數的地方,我已經在數據庫中設置了超出我爲這個例子輸入的內容。完成後它應該很棒,後端可以隨時更改設置 –