Bonjour,

Je vous explique mon problème, j'ai une première page php, dans laquelle il y a un formulaire, dans lequel une personne va entrer des informations, et aussi je génère un id, et j'envoie le tout à une deuxième page php, qui va stocker les informations reçues avec le id dans un fichier xml "resultats.xml", puis affiche aussi un autre formulaire, dans lequel des questions sont posés à l'utilisateur. Ces réponses sont envoyées à une troisième page php, avec encore une fois le même id. Dans cette troisième page, j'essaye d'ajouter ces réponses, dans le fichier xml, dans la balise résultat qui a comme id, celui envoyé à cette troisième page, pour que ces réponses soient ajoutés avec les informations de la même personne. sauf que j'ai un problème avec la requête XPATH.

La structure de mon fichier XML est la suivante:

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
<?xml version="1.0" encoding="UTF-8"?>
<resultats>
  <resultat/>
  <id>1</id>
  <nom>nom</nom>
  <age>1830</age>
  <vue>oui</vue>
  <tvue>myopie</tvue>
  <cv1>true</cv1>
  <cv2>true</cv2>
  <cv3>true</cv3>
  <cv4>true</cv4>
  <cv5>true</cv5>
  <cv6>true</cv6>
</resultats>
Bien évidemment à cause du problème dont je vous ai parlé, je n'arrive pas à ajouter les balises <cv> .

Maintenant le code que j'utilise, dans lequel il y a ma requête XPATH:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
$dom = new DomDocument();
        $dom->preserveWhiteSpace = FALSE;
        $dom->formatOutput = TRUE;
        $dom->load('resultats.xml');
 
		$xpath = new DomXPath($dom);
		$id = $_POST['id'];
		$res = $xpath->query('/resultats/resultat[id = "' . $id . '"]');
		$eval = $res->item(0);
Ça c'est la première partie du code, après quelques traitements, je crée un élément puis je l'ajoute dans le fichier XML, à la variable $eval :

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
$q1 = $dom->createElement('cv1', $r1);
		$q2 = $dom->createElement('cv2', $r2);
		$q3 = $dom->createElement('cv3', $r3);
		$q4 = $dom->createElement('cv4', $r4);
		$q5 = $dom->createElement('cv5', $r5);
		$q6 = $dom->createElement('cv6', $r6);
 
 
 
		$eval->appendChild($q1);
		$eval->appendChild($q2);
		$eval->appendChild($q3);
		$eval->appendChild($q4);
		$eval->appendChild($q5);
		$eval->appendChild($q6);
 
		$dom->save('resultats.xml');
Résultat, un message d'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Fatal error: Call to a member function appendChild() on a non-object in C:\Users\MoW\Documents\IND6412\Tp2\test2.php
La ligne qui cause l'erreur est celle ou je fais le appendChild ...

Pouvez vous m'aider à régler ce problème SVP?

Merci.


...