2011-03-17 4 views
0

나는 버튼 클릭시 링크 된 CSS 파일을 변경하기 위해 선택한 CSS 파일을 세션에 저장 했으므로 사용자가 선택한 CSS 파일을 모두 가질 수있는 동적 PHP 페이지가 있습니다. 그의 세션 중 시간.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에 갈 때 어떤 현상이 발생합니까? –

+0

PHP를 HTML로로드하려고합니다. 먼저 내용을 가져온 다음 DOM에로드해야합니다. – ircmaxell

+0

loadHTMLFile()을 사용하여 PHP 파일을로드하는 이유는 무엇입니까? 해당 파일에 PHP가 있으면 실행되지 않습니다. – glomad

답변

1

homework.php가 표시하고있는 파일과 매우 다르다면 콘텐츠가 중복되는 것은 당연한 것입니다. 숙제를 실행하면 DOM 코드 앞에 나타나는 HTML이 출력됩니다. 그런 다음 DOM이 실행되고 동일한 내용을 다시로드하고 속성을 변경하고 전체 코드를 한 번 더 인쇄합니다.

DOM이 필요하지 않습니다. DOM 코드 대신 이미 사용하고있는 CSS 파일을 계산하여 파일 이름과 적절한 위치를 에코합니다.

<?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

관련 문제