Hallo Ihr!
Ich habe folgende XML:
PHP-Code:
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item id="1">
<date>Datum von Objekt 1</date>
<publish>Veröffentlichung von Objekt 1</publish>
<zusatz>Zusatz von Objekt 1</zusatz>
<addon>Spezial zu Objekt 1</addon>
<url>Link zu Objekt 1</url>
</item>
<item id="2">
<date>Datum von Objekt 2</date>
<publish>Veröffentlichung von Objekt 2</publish>
<zusatz>Zusatz von Objekt 2</zusatz>
<addon>Spezial zu Objekt 2</addon>
<url>Link zu Objekt 2</url>
</item>
<item id="3">
<date>Datum von Objekt 3</date>
<publish>Veröffentlichung von Objekt 3</publish>
<zusatz>Zusatz von Objekt 3</zusatz>
<addon>Spezial zu Objekt 3</addon>
<url>Link zu Objekt 3</url>
</item>
<items>
Die Elemente lege ich an, lösche sie und editiere sie mit folgenden scripten:
PHP-Code:
$news = simplexml_load_file('data.xml');
function addNews($id,$date,$publish,$zusatz,$addon,$url) {
global $news;
$news->addChild('item');
$news->item[count($news)-1]->addAttribute('id',$id);
$news->item[count($news)-1]->addChild('date',(htmlspecialchars($date)));
$news->item[count($news)-1]->addChild('publish',(htmlspecialchars($publish)));
$news->item[count($news)-1]->addChild('zusatz',(htmlspecialchars($zusatz)));
$news->item[count($news)-1]->addChild('addon',(htmlspecialchars($addon)));
$news->item[count($news)-1]->addChild('url',(htmlspecialchars($url)));
$news->asXML('../newmex_data/news.xml');
}
if (isset($_POST['newitem'])) addNews($_POST['id'],$_POST['date'],$_POST['publish'],$_POST['zusatz'],$_POST['addon'],$_POST['url']);
function editNews($id,$date,$publish,$zusatz,$addon,$url) {
global $news;
$hlp = $news->xpath('//item[@id="'.$id.'"]');
$hlp[0]->date = htmlspecialchars($date);
$hlp[0]->publish = htmlspecialchars($publish);
$hlp[0]->zusatz = htmlspecialchars($zusatz);
$hlp[0]->addon = htmlspecialchars($addon);
$hlp[0]->url = htmlspecialchars($url);
$news->asXML('../newmex_data/news.xml');
}
if (isset($_POST['edititem'])) editNews($_POST['id'],$_POST['date'],$_POST['publish'],$_POST['zusatz'],$_POST['addon'],$_POST['url']);
function deleteNews($id) {
global $news;
$i=0;
foreach ($news as $item) {
if ($item['id'] == $id) $del=$i;
$i++;
}
unset($news->item[$del]);
$news->asXML('../newmex_data/news.xml');
}
if (isset($_POST['deleteitem'])) deleteNews($_POST['id']);
Jetzt möchte ich aber die Positionen der Einträge nachträglich verschieben können. Also zum Beispiel das <item id="3"> zwischen <item id="2"> und <item id="1"> und es so wieder im XML speichern.
Am liebsten wären mir zwei Buttons, die ich einfach mit der Funktion des Verschiebens nach oben und des Verschiebens nach unten in die Bearbeitungsoberfläche legen kann.
Könnt Ihr mir sagen, ob das möglich ist? Und noch wichtiger: wenn ja, wie? Da ich ein absoluter Neuling bin, was XML in Verbindung mit PHP angeht würde ich mich über detailreiche Hilfe sehr freuen.
Liebe Grüße
Waldmensch