Bonjour à tous!
En ce moment, je travaille sur mon site. Pour y voir un peu plus clair, je crée des classes à partir de mes anciennes fonctions. Ainsi, toutes les fonctions nécessaires à la gestion des news sont maintenant les méthodes de la classe "news".
Les news sont stockées dans un fichier XML dans lequel il faut pouvoir écrire les news, les modifier et les supprimer pour cela, j'utilise le DOM. Je procède de la même façon pour les liens.
Pour la gestion des liens, il n'y a aucun problème. Pour la gestion des news l'ajout et la suppression fonctionnent. Par contre, la modification renvoie un message d'erreur ce qui est bizarre car la modification des liens est pratiquement identique.
Voici la partie du code permettant la modification:
Et son message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 // Fonction de modification public function modifNews($id, $titre, $desc, $content, $url) { if(!file_exists($this->xml)) { echo "<p>Erreur lors du chargement du fichier XML.</p>"; } else { $this->doc->load($this->xml); $root = $this->doc->documentElement; $items = $this->doc->getElementsByTagName('item'); $date = $this->afficheDate($this->xml); $i = 0; // Récupération des noeuds non modifiables pour les réécrire. foreach($items as $item) { $idNews = $item->getAttribute("id"); $display = $date[$i]['display']; $archDate = $date[$i]['archive']; $rssDate = $date[$i]['rss']; // Si l'id correspond au paramètre reçu par la fonction, réécriture du noeud. if($idNews == $id) { // Création du noeud item. $itemNode = $this->doc->createElement('item'); $itemNode->appendChild(new DOMAttr('id', $id)); // Noeud titre. $titleNode = $itemNode->appendChild(new DOMElement('title', utf8_encode(stripslashes($titre)))); // Noeud date. $dateNode = $itemNode->appendChild(new DOMElement('date')); $dispNode = $dateNode->appendChild(new DOMElement('display', $display)); $archNode = $dateNode->appendChild(new DOMElement('archive', $archDate)); $rssNode = $dateNode->appendChild(new DOMElement('rss', $rssDate)); // Noeud description. $descNode = $itemNode->appendChild(new DOMElement('description', utf8_encode(stripslashes($desc)))); // Contenu. $textNode = $itemNode->appendChild(new DOMElement('content')); $dataNode = $textNode->appendChild(new DOMCDATASection(utf8_encode(stripslashes($content)))); // URL $urlNode = $itemNode->appendChild(new DOMElement('url', htmlentities($url))); // Remplacement de l'ancien noeud. $root->replaceChild($itemNode, $item); parent::saveFile(); } $i++; } } }
Je ne comprends pas ce qui est à l'origine du problème donc je me permets de faire appel à votre aide. Je tiens à signaler que cela fonctionnait quand il s'agissait d'une fonction écrite dans la page permettant la modification.Fatal error: Uncaught exception 'DOMException' with message 'Wrong Document Error' in C:\Program Files\wamp\www\SiteV4\admin\include\class_news.php:232 Stack trace: #0 C:\Program Files\wamp\www\SiteV4\admin\include\class_news.php(232): DOMNode->replaceChild(Object(DOMElement), Object(DOMElement)) #1 C:\Program Files\wamp\www\SiteV4\admin\pages\modNews.php(51): news->modifNews('16', 'Mise ? jour du ...', 'Quelques nouvea...', 'Le site n\'a pa...', '') #2 {main} thrown in C:\Program Files\wamp\www\SiteV4\admin\include\class_news.php on line 232
La ligne 232 est celle-ci:
J'espère vous avoir donné suffisamment d'informations. Je vous remercie d'avance pour l'aide que vous m'apporterez.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $root->replaceChild($itemNode, $item);
Partager