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 :
voici mon fichier avec le xml dedans :
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); }
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
Partager