FritzTheCat
Grünschnabel
Servus!
Ich poste euch hier mal mein Skript zum editieren einer XML-Datei in PHP (basierend auf dem Tutorial http://www.phpforum.de/forum/showthread.php?t=162296).
Hier die XML Datei:
Es können beliebig viele "section"s angelegt werden, das Tag <id> beschreibt den Abschnitt.
Hier die PHP Datei:
Der array $sections beinhaltet die Inhalte der <id> Tags.
Vielleicht kann das ja der ein oder andere brauchen.
Zu beachten ist, dass der Internet User Schreibrechte auf die xml-datei hat.
Gruß
Alex
Ich poste euch hier mal mein Skript zum editieren einer XML-Datei in PHP (basierend auf dem Tutorial http://www.phpforum.de/forum/showthread.php?t=162296).
Hier die XML Datei:
HTML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<section>
<id>general</id>
<site_name>Testseite</site_name>
<surname>Mustermann</surname>
<forename>Max</forename>
<email>max.mustermann@mail.de</email>
</section>
</config>
Hier die PHP Datei:
PHP:
<?php
error_reporting (E_ALL);
$doc = DOMDocument::load("../config/config.xml");
$xp = new domxpath($doc);
# dieser array beinhaltet die sections der XML-Datei
$sections = array ("general", "interface", "tables");
if ($_POST) {
$section = $_POST["section"];
foreach ($_POST as $key => $value) {
if ($key != "section") {
$edit = $key;
$newtag = $doc->createElement("$key");
$newtag_content = $doc->createTextNode($value);
$newtag->appendChild($newtag_content);
$titles = $xp->query('section[id="' . $section . '"]');
foreach ($titles as $node) {
foreach($node->childNodes as $cnode) {
if($cnode->nodeType == 1) {
if($cnode->nodeName == $edit) {
$cnode->parentNode->replaceChild($newtag, $cnode);
}
}
}
}
}
}
$doc->save("../config/config.xml");
print "saved...<br><br><a href=\"index.php\">back</a>";
exit (0);
}
foreach ($sections as $section) {
print "<form action=\"\" method=\"POST\">";
print "<table><tr><th colspan=\"2\">$section</th></tr>";
$titles = $xp->query('section[id="' . $section . '"]');
foreach ($titles as $node) {
foreach($node->childNodes as $cnode) {
if($cnode->nodeType == 1) {
if ($cnode->nodeName != "id") {
print "<tr><td>" . $cnode->nodeName . "</td><td><input type=\"text\" value=\"" . $cnode->textContent . "\" name=\"" . $cnode->nodeName . "\"></td></tr>";
}
}
}
}
print "<tr><td></td><td><input type=\"submit\" value=\" invoke \"></td></tr></table>";
print "<input type=\"hidden\" name=\"section\" value=\"$section\">";
print "</form>";
}
?>
Der array $sections beinhaltet die Inhalte der <id> Tags.
Vielleicht kann das ja der ein oder andere brauchen.
Zu beachten ist, dass der Internet User Schreibrechte auf die xml-datei hat.
Gruß
Alex