2011-03-17 149 views
0

我有一個動態的PHP頁面,在按鈕單擊更改鏈接到它的CSS文件,我已經做到了將選定的CSS文件保存到會話,所以用戶將選擇的CSS文件全部在他的會議期間的時間。saveHTML()保存2個副本

我的問題是,編輯鏈接html元素中的href元素 - 爲了鏈接新選擇的文件 - 我使用saveHTML()函數來保存編輯版本,輸出是災難,我有兩個副本的頁面上的所有元素,我的意思是兩個橫幅,兩個提交按鈕,一切都是重複的!

我的代碼看起來是這樣的:

<!--CSS Theme--> 

<link id = "theme" rel="stylesheet" type="text/css" href="White.css" /> 

<!--Change Theme--> 
<?php 
    if(isSet($_GET["Theme"])) 
    { 
     $th = $_GET["Theme"]; 

     $_SESSION["Theme"] = $th; 

    } 
    else if(isSet($_SESSION["Theme"])) 
    { 
     $th = $_SESSION["Theme"]; 
    } 

    else 
    { 
     $th = 'White.css'; 
    } 

    switch ($th) { 

     case 'Light Blue': 
     $theme_file = 'LightBlue.css'; 
     break; 


     default: 
     $theme_file = 'White.css'; 

} 
    $dom = new DOMDocument; 
    @$dom->loadHTMLFile('HomeWork.php'); 
    $node= $dom->getElementById('theme') ; 
    $node->setAttribute('href', $theme_file); 
    echo $dom->saveHTML(); 


?> 

編輯HomeWork.php是包含前面的代碼相同的文件。

你有什麼想法是什麼問題?

+1

當你去HomeWork.php會發生什麼? – 2011-03-17 18:59:40

+0

您試圖將PHP加載爲HTML。您需要首先獲取內容,然後將其加載到DOM中... – ircmaxell 2011-03-17 19:01:40

+0

爲什麼要使用loadHTMLFile()加載PHP文件?如果該文件中有PHP,它將不會被執行。 – glomad 2011-03-17 19:02:51

回答

1

如果homework.php與您展示的文件完全相同,那麼難怪內容是重複的。當你執行homework.php時,打印出DOM代碼之前出現的任何HTML。然後你的DOM被執行,再次加載相同的內容,改變屬性並再次打印整個代碼。

你不需要這個DOM。只需計算您想要使用的CSS文件,就像您已經做過的那樣,而不是您的DOM代碼,請回顯文件名和相應的位置,例如

<?php 
    // code to calculate from $_SESSION which filename to use 
    // store in $fileName variable 
?> 
// HTML Stuff here 
// insert the variable into the HTML 
<link id="theme" rel="stylesheet" type="text/css" href="<?php echo $fileName ?>" /> 
+0

非常感謝,你救了我的一天! – Lisa 2011-03-17 19:30:55

相關問題