<? $label = $_POST['label']; $order = $_POST['order']; $itemMoved = $_POST['itemMoved']; $orderArray = explode(',', $order); $itemIndex = 0; foreach($orderArray as $index=>$value){ if($value == $itemMoved) $itemIndex = (int)$index; } $itemAfter = ''; if(isset($orderArray[$itemIndex+1])) $itemAfter = $orderArray[$itemIndex+1]; $doc = new DOMDocument; $doc->load('../db/links.xml'); $xpath = new DOMXpath($doc); // Buffering and deleting moved element foreach($xpath->query('label/link[title = "'.$itemMoved.'"]') as $node) { $buffer = $node; $node->parentNode->removeChild($node); } if($itemAfter != ''){ $searchLabel = $xpath->query('label[@id="'.$label.'"]/link[title = "'.$itemAfter.'"]')->item(0); $searchLabel->parentNode->insertBefore($buffer, $searchLabel); }else{ $searchLabel = $xpath->query('label[@id="'.$label.'"]'); $searchLabel->item(0)->appendChild($buffer); } $doc->save('../db/links.xml');