login  Naam:   Wachtwoord: 
Registreer je!
 Forum

DOM Div vervangen

Offline Jorisvh - 10/06/2012 19:02
Avatar van JorisvhLid Hallo

Ik heb een probleem bij mijn php-programma om mijn site te kunnen beheren.

Ik wil iem. de mogelijkheid geven om de inhoud van de site aan te passen op eigen computer op een eenvoudige manier en dat dat pagina dan kan automatisch kan geupload worden naar de server.

Hier in dit voorbeeld wordt de inhoud van een div (id=inhoud) getoond als een soort tekstverwerker. Hier kan de gebruiker de inhoud aanpassen, maar bij het opslaan loopt het mis.

Ik kan niet op de gepaste code komen om een div te vervangen in een html document.
Met deze code: $elemNieuw = $doc->importNode($nieuw->documentElement,true); worden hier <html><body> en </html></body> tags teveel geplaatst in mijn html document.

Hoe kan ik mijn code aanpassen?

Zie hier mijn code
  1. <?
  2. $bestand = "../".$_GET['bestand'];
  3. $best = $_GET['bestand'];
  4. $innerHTML = '';
  5. $doc = new DOMDocument();
  6. $doc->loadHTMLFile($bestand);
  7. $elem = $doc->getElementById("inhoud");
  8.  
  9. // loop through all childNodes, getting html
  10. $children = $elem->childNodes;
  11. foreach ($children as $child) {
  12. $tmp_doc = new DOMDocument();
  13. $tmp_doc->appendChild($tmp_doc->importNode($child,true));
  14. $innerHTML .= $tmp_doc->saveHTML();
  15. }
  16. ?>
  17.  
  18.  
  19. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  20. <html><head>
  21. <title>Lets Zottegem beheer</title>
  22. <link rel="stylesheet" type="text/css" href="../css/master.css">
  23. <script type="text/javascript" src="../ajax.js"></script>
  24. <script type="text/javascript" src="../menu.js"></script>
  25. <script type="text/javascript" src="../tinymce/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
  26. <script type="text/javascript">
  27. tinyMCE.init({
  28. // General options
  29. mode : "textareas",
  30. theme : "advanced",
  31. skin : "o2k7",
  32. plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
  33.  
  34. // Theme options
  35. theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
  36. theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
  37. theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
  38. theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
  39. theme_advanced_toolbar_location : "top",
  40. theme_advanced_toolbar_align : "left",
  41. theme_advanced_statusbar_location : "bottom",
  42. theme_advanced_resizing : true,
  43.  
  44. // Example word content CSS (should be your site CSS) this one removes paragraph margins
  45. content_css : "css/word.css",
  46.  
  47. // Drop lists for link/image/media/template dialogs
  48. template_external_list_url : "lists/template_list.js",
  49. external_link_list_url : "lists/link_list.js",
  50. external_image_list_url : "lists/image_list.js",
  51. media_external_list_url : "lists/media_list.js",
  52.  
  53. // Replace values for the template plugin
  54. template_replace_values : {
  55. username : "Some User",
  56. staffid : "991234"
  57. }
  58. });
  59. </script>
  60. <style type="text/css">
  61. table td {
  62. vertical-align: top;vertical-align: top;
  63. }
  64. </style>
  65. </head>
  66. <body onLoad="laad('menu.htm')">
  67.  
  68. <div id="page-container">
  69. <div id="kop">
  70. <h1>LETS Regio Zottegem beheer</h1>
  71. </div>
  72. <div id="menu">
  73. </div>
  74. <div id="pagina">
  75. <div id="titel">
  76. <h2>Kalender</h2>
  77. </div>
  78. <div id="inhoud">
  79. <form method="post" action="<? echo $_SERVER['PHP_SELF']."?bestand=".$best; ?>">
  80. <p>
  81. <textarea name="content" cols="50" rows="15">
  82. <? echo htmlentities($innerHTML); ?>
  83. </textarea>
  84. <input type="submit" value="Opslaan op computer" />
  85. </p>
  86. </form>
  87.  
  88. <?php
  89. // oorspronkelijk
  90.  
  91. if(isset($_POST['content'])){
  92. //$bestand = "../kalender.html";
  93. $doc = new DOMDocument();
  94.  
  95. $doc->loadHTMLFile($bestand);
  96. $elemOud = $doc->getElementById("inhoud");
  97.  
  98.  
  99. //nieuw deel
  100. $nieuw = new DOMDocument();
  101. echo "<pre>".$nieuw->saveHTML()."</pre>";
  102. $nieuw ->loadHTML("<div id='inhoud'>".$_POST['content']."</div>");
  103. echo "Nieuw: ".$nieuw->saveHTML();
  104. $elemNieuw = $nieuw->getElementById("inhoud");
  105.  
  106. //foreach ($src->childNodes as $el) $dst->appendChild($destdoc->importNode($el, TRUE));
  107. //foreach ($elemNieuw->childNodes as $el) $elemOud->appendChild($ddoc->importNode($el, TRUE));
  108. $elemNieuw = $doc->importNode($nieuw->documentElement,true);
  109.  
  110. $elemOud->parentNode->replaceChild($elemNieuw, $elemOud);
  111.  
  112. echo "<br><br>".$doc->saveHTML();
  113. $doc->saveHTMLFile ("test.html");
  114. //echo $bestand." werd opgeslaan op jouw PC";
  115.  
  116. } //end-if lokaal opslaan
  117.  
  118. ?>
  119.  
  120.  
  121. </div>
  122. </div>
  123. </div>
  124.  
  125. </body></html>

5 antwoorden

Gesponsorde links
Offline Martijn - 11/06/2012 13:50
Avatar van Martijn Crew PHP Als iemand de html op zn pc maakt, neem ik aan dat ze weten hoe het er uit gaat zien enzo? Dus zouden ze alleen de code hoeven te kopieren toch? dat hoeft dan niet via tinymce, maar dan kan met ctrl C+V in een textarea, en dan een submit?

Dan laat je serverside er een scriptje door lopen, die mogelijk de head enzo leeghaalt....
Offline Jorisvh - 11/06/2012 19:27
Avatar van Jorisvh Lid
Martijn schreef:
Als iemand de html op zn pc maakt, neem ik aan dat ze weten hoe het er uit gaat zien enzo? Dus zouden ze alleen de code hoeven te kopieren toch? dat hoeft dan niet via tinymce, maar dan kan met ctrl C+V in een textarea, en dan een submit?

Dan laat je serverside er een scriptje door lopen, die mogelijk de head enzo leeghaalt....


Sorry, dit is helemaal niet wat ik wil. Ten 1ste die persoon kent niets van html, en ten 2de ik wil het hem ook zo eenvoudig mogelijk maken om html-pagina's aan te passen. Ik wil niet dat hij met html-code in aanraking komt!
Ik heb wel php al geïnstalleerd op zijn computer!
Het lukt wel al om met tinymce pagina's aan te passen. Deze heeft wel al de goede html-code af.
Kan ik écht mijn code niet verbeteren?
Offline Pieter - 11/06/2012 19:57
Avatar van Pieter Gouden medaille

SEO guru
Waarom het zo moeilijk doen Jorisvh en niet alles op de server maken? Een eenvoudig CMS dus?
Offline Jorisvh - 13/06/2012 21:22
Avatar van Jorisvh Lid
Pieter schreef:
Waarom het zo moeilijk doen Jorisvh en niet alles op de server maken? Een eenvoudig CMS dus?

Beste

Toch zou ik graag hebben dat dit lukt.
Als dit lukt kan ik ook voor andere mensen een website maken (via LETS en zonder dat ze moeten betalen in Euro) Wie maandelijks betaalt voor een internetverbinding heeft gewoonlijk al recht op gratis webruimte, maar dit is enkel voor een statische website. Vandaar.
Meer info over LETS, zie: zottegem.letst.be
Offline Pieter - 14/06/2012 10:29
Avatar van Pieter Gouden medaille

SEO guru
Ikzelf zit bij Lets Sint-Niklaas. Een treffelijke basishost kost een paar euro op jaarbasis, daarom zou ik niet al die moeite doen. Of je kan je resellerhosting laten Letsen door de leden, veel gemakkelijker. 

Vooral, alles wat je lokaal op een computer gaat regelen kan nog eens gemakkelijker foutlopen dan met een treffelijk eenvoudig CMS. Je hebt ook eenvoudige 'webdesign' programma's die automatisch uploaden enzo. Let wel, de kwaliteit van de code zal nooit echt 'dat' zijn. 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.184s