2015-12-10 9 views
0

Я использую следующий код для анализа структуры HTML-шаблона в DOM-опции, а затем используя результаты SQL-запроса, я пытаюсь создать и добавить некоторые html-фрагменты к родительскому узлу dom-объекта, затем эхо-код HTML, сгенерированный с помощью стиля. Тем не менее, HTML-рендеринг - это необработанный HTML-код, и это не стиль.PHP createTextNode() отображает только текст с помощью saveHTML()

Любые идеи о том, что делать? Я рассматриваю возможность переноса всего этого на JQuery вместо PHP, так как после Googling я не могу найти прямое решение, которое работает без какой-либо последующей обработки в самом HTML с тегом <script>.

Вот шаблон HTML, из которого узлы должны быть приложены (JumboTron HTML):

<!-- CONTENT --> 
    <div class="container"> 

    <div class="row"> 
     <!--CONTENT DIVs--> 
     <div class="jumbotron col-xs-12 col-sm-10 col-sm-push-2" id="contents"> 

     <!--END OF CONTENT DIVs--> 

А вот PHP код:

//Create DOM of the main page 
$masterdoc = new DOMDocument(); 
@$masterdoc->loadHTMLFile($filename); 

$masterflag = $masterdoc->getElementById("contents"); 

//The SQL statement needed 
$sql = "SELECT folder_name FROM FOLDERS INNER JOIN LINKAGES ON FOLDERS.id = LINKAGES.child WHERE folder_id = (SELECT id from FOLDERS WHERE folder_name = '" . $foldername . "');"; 
$result = $conn->query($sql); 
$count = $result->num_rows; 

//Save all the folder names into an array 
$data = array(); 
$index = 0; 
if ($count> 0) { 
    while($row = $result->fetch_array()) { 
     $data[$index] = $row["folder_name"]; 
     $index++; 
    } 
} else { 
    echo "0 results"; 
} 
//Loop through the array to generate Jumbotrons and append these to the right section of the main HTML. 
for ($x = 0; $x <count($data); $x++) { 
    $masterflag->appendChild($masterdoc->createTextNode('<div class="row"><div class="col-xs-2"><i class="fa fa-folder fa-4x"></i></div><div class="col-xs-8"><a href="http://localhost/www/folders.php?link="' . $data[$x] . '" class="btn btn-block" type="content" id="content">' . $data[$x] . '</a></div><div class="col-xs-2"><i class="fa fa-arrow-right fa-4x"></i></div></div><hr>')); 
} 

echo $masterdoc->saveHTML(); 

Так что вы можете увидеть, что происходит это моя страница:

The text code generated

ответ

0

См this ответ. Вам нужно использовать DomDocument::createDocumentFragment(), а затем добавить строку XML к созданному фрагменту, а затем DomElement::appendChild(), что фрагмент в $masterflag

+0

Спасибо! Это работает сейчас. –

+0

вы можете принять ответ, если хотите – Alexey