Bonjour,

j'aimerais pouvoir gérer les champs null d'un fichier XML.

Si tous les champs sont remplis, il n'y a aucun problème, la fonction fait ce qu'elle a à faire mais dès qu'un champ vide est présent l'application m'indique l'erreur suivante que je n'arrive pas à résoudre ..

Uncaught TypeError: Cannot call method 'getElementsByTagName' of null

J'ai essayé de traiter ces champs null avec le code suivant mais cela ne marche pas :

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
function import_sess_list(id_sess)
{
	var data = 'traitement_sess='+true+'&id_sess='+id_sess;
	var XMLhttp = new XMLHttpRequest();
	XMLhttp.open("POST","traitement/traitement_import.php",true);
	XMLhttp.onreadystatechange=function(){
		if (XMLhttp.readyState==4 && XMLhttp.status==200){
			//  Assigner le fichier XML à une variable
			var doc = XMLhttp.responseXML; 
			//  Lire le premier élément avec DOM
 
			var element = doc.getElementsByTagName('auto_eval').item(0).firstChild ? doc.getElementsByTagName('auto_eval').item(0).firstChild.data : null;
			var element2 = doc.getElementsByTagName('util_langue').item(0).firstChild ? doc.getElementsByTagName('util_langue').item(0).firstChild.data : null ;
			var element3 = doc.getElementsByTagName('obj').item(0).firstChild ? doc.getElementsByTagName('obj').item(0).firstChild.data : null;
			var element4 = doc.getElementsByTagName('dispo').item(0).firstChild ? doc.getElementsByTagName('dispo').item(0).firstChild.data : null;
 
			//  Copier le contenu dans le formulaire 
			document.form_ajout_sess.auto_evaluation.value= element;   
			document.form_ajout_sess.utilisation_langue.value= element2;   
			document.form_ajout_sess.objectif.value= element3;   
			document.form_ajout_sess.disponibilite.value= element4; 
 
		}
	};
	XMLhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 
	XMLhttp.send(data);
}
voici mon fichier avec le xml dedans :

Code php : 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
<?php
header('Content-Type: text/xml');
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ? >\n";
echo "<donnees>\n";
 
include_once("../connexion.php");
 
if(isset($_POST['traitement_sess']) && isset($_POST['id_sess']) && !empty($_POST['id_sess']))
{
 
	$id_sess=$_POST['id_sess'];
	/*INFOS SESSIONS POUR IMPORT apres choix list deroulante*/
	try {
 
		// Connect and create the PDO object
		$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
		$conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8
 
		// Define and prepare an INSERT statement
		$sql="SELECT sess_auto_eval, sess_utilisation_langue, sess_objectif, sess_dispo FROM sess WHERE sess_id = '".$id_sess."'";
 
 
		$result = $conn->query($sql);  
 
 
		while($row = $result->fetch(PDO::FETCH_ASSOC)) {
			echo "<auto_eval>"; echo $row['sess_auto_eval']; echo "</auto_eval>\n";
			echo "<util_langue>"; echo $row['sess_utilisation_langue']; echo "</util_langue>\n";
			echo "<obj>"; echo $row['sess_objectif']; echo "</obj>\n";
			echo "<dispo>"; echo $row['sess_dispo']; echo "</dispo>\n";
 
		}
 
		$conn = null;        // Disconnect
 
	} catch(PDOException $e) {
		echo $e->getMessage();
	}
}
 
echo "</donnees>\n";
 
?>

Si vous savez comment faire, merci de mon donner un tit coup de pouce
Florian