1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
<?php
if(!empty($_POST)){
$xmlFile = $_POST['flXmlFile'];
$action = $_POST['flAction'];
$id = $_POST['flId'];
if ($action == "supprimer" ) {
$date = null;
$titre=null;
$texte = null;
} else {
$date = $_POST['flDate'];
$titre=$_POST['flTitre'];
$texte = $_POST['flTexte'];
}
}
/*$xmlFile = "news.xml";
$action = "supprimer";
$id = "3";
//$date = "20/03/2011";
//$titre = "nouveau t";
//$texte = "nouveau texte";*/
$dom = new DomDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->formatOutput = TRUE;
$dom->load($xmlFile);
$listeNews = $dom->getElementsByTagName('news')->item(0);
$listeNewsOne = $dom->getElementsByTagName('oneNews');
// test de l'action demandée
switch ($action) {
case "modifier":
modifier();
break;
case "ajouter":
ajouter();
break;
case "supprimer":
modifier();
break;
default:
echo "aucune action";
}
//MODIFIER
function modifier() {
global $action, $id, $listeNewsOne, $listeNews, $dom, $xmlFile;
// parcour des noeuds oneNews
foreach($listeNewsOne as $oneNews){
$attr = $oneNews->getAttributeNode('id');
// on cherche l'id a modifier en fonction de l'id envoyé par flash
if ($attr->nodeValue == $id) {
if ($action == "supprimer") {
$listeNews->removeChild($oneNews);
// on décale l'id des news au dessous de celle supprimée
foreach($listeNewsOne as $oneNews) {
$attr = $oneNews->getAttributeNode('id');
$attr = (int)$attr->nodeValue;
$target = (int)$id;
if($attr>$target){
$attr -= 1;
$attr = (string)$attr;
$oneNews->getAttributeNode('id')->nodeValue = $attr;
}
}
$toflash = $action." : PHP executed";
echo $toflash;
$dom->save($xmlFile);
}else{
actionXMl($oneNews);
}
}
}
}
//AJOUTER
function ajouter() {
global $listeNews, $listeNewsOne;
// on décale l'id de chaque news
foreach($listeNewsOne as $oneNews) {
$attr = $oneNews->getAttributeNode('id');
$attr = (int)$attr->nodeValue;
$attr += 1;
$attr = (string)$attr;
$oneNews->getAttributeNode('id')->nodeValue = $attr;
}
// on clone la premiere news
$newsClone = $listeNews->getElementsByTagName('oneNews')->item(0)->cloneNode(true);
actionXMl($newsClone);
}
// ACTION sur le xml et enregistrement
function actionXMl($News) {
global $action, $date, $titre, $texte, $listeNews, $listeNewsOne, $dom, $xmlFile, $toflash;
$oneN = $News;
// on midifie les noeuds avec les variables reçus
$oneN->getElementsByTagName('date')->item(0)->nodeValue = trim($date);
$oneN->getElementsByTagName('titre')->item(0)->nodeValue = trim($titre);
$oneN->getElementsByTagName('texte')->item(0)->nodeValue = trim($texte);
if ($action == "ajouter") {
// on met l'id de la nouvelle news à 1
$oneN->setAttribute("id", "1");
// ajout du clone dans le dom
$listeNews->insertBefore($oneN, $listeNewsOne->item(0));
}
// enregistrement du xml modifié
$toflash = $action." : PHP executed";
echo $toflash;
$dom->save($xmlFile);
}
?> |
Partager