Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/03/2011, 12h06   #1
 
Charly
Inscription : mars 2011
Messages : 11
Détails du profil
Informations personnelles :
Nom : Charly

Informations forums :
Inscription : mars 2011
Messages : 11
Points : -1
Points : -1
Par défaut error: Call to a member function appendChild() on a non-object

Bonjour à tous,

Je réalise pour le boulot un petit formulaire pour lister les utilisateurs qui passe par mon service.
J'ai juste un petit soucis au niveau de l'enregistrement du nouvel élément à la suite de mon document Xml existant.

Je sèche et j'ai pas mal de taff donc pas le temps de faire des recherches,
je trouve cette solution plus "sexy" qu'un tableau Excel ,

Merci d'avance si vous pouvez apporter de la lumière à mon code !

// Contenue de mon fichier.php
Code php :
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
<?php
$dom = new DomDocument();
$dom->load('express.xml');

$newens = $dom->createElement("Utilisateur");

$date = $dom->createElement("date");
$portable = $dom->createElement("MM");
$valportable = $dom->createTextNode($_POST['element_4_1']);
$portable->appendChild($valportable);
$fixe = $dom->createElement("DD");
$valfixe = $dom->createTextNode($_POST['element_4_2']);
$fixe->appendChild($valfixe);
$bureau = $dom->createElement("YYYY");
$valbureau = $dom->createTextNode($_POST['element_4_3']);
$bureau->appendChild($valbureau);

$date->appendChild($portable);
$date->appendChild($fixe);
$date->appendChild($bureau);



$nom = $dom->createElement("nom");
$valnom = $dom->createTextNode($_POST['element_1_1']);
$nom->appendChild($valnom);

$prenom = $dom->createElement("prenom");
$valprenom = $dom->createTextNode($_POST['element_1_2']);
$prenom->appendChild($valprenom);

$TGI = $dom->createElement("TGI");
$valTGI = $dom->createTextNode($_POST['element_2']);
$TGI->appendChild($valTGI);



$telephone = $dom->createElement("telephone");
$valtelephone = $dom->createTextNode($_POST['element_8']);
$telephone->appendChild($valtelephone);

$materiel = $dom->createElement("matériel");
$valmateriel = $dom->createTextNode($_POST['element_7']);
$materiel->appendChild($valmateriel);

$ID = $dom->createElement("Identifiant");
$valID = $dom->createTextNode($_POST['element_9']);
$ID->appendChild($valID);

$incident = $dom->createElement("Incident");
$valincident = $dom->createTextNode($_POST['element_3']);
$incident->appendChild($valincident);


$email = $dom->createElement("email");
$valemail = $dom->createTextNode($_POST['element_5']);
$email->appendChild($valemail);

$newens->appendChild($date);
$newens->appendChild($nom);
$newens->appendChild($prenom);
$newens->appendChild($prenom);
$newens->appendChild($TGI);
$newens->appendChild($telephone);
$newens->appendChild($email);
$newens->appendChild($materiel);
$newens->appendChild($ID);
$newens->appendChild($incident);





$util = $dom->getElementsByTagName("Utilisateur")->item(0);
$util->appendChild($newens);
$dom->save('express.xml');
?>
nikool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 13h28   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
C'est simple, $dom->getElementsByTagName("Utilisateur")->item(0); ne renvoie rien.
Vérifie en faisant:
Active l'affichage des erreurs PHP, garde un oeil sur le log d'erreur d'Apache et équipe toi d'un déboggeur.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 14h16   #3
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
@ Benjamin Delespierre :
c'est pas à $dom qu'il faudrait ajouter $newens :
Code :
$dom->appendChild($newens);
plutot que :
Code :
1
2
$util = $dom->getElementsByTagName("Utilisateur")->item(0);
$util->appendChild($newens);
???
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 14h19   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par vorace Voir le message
@ Benjamin Delespierre :
c'est pas à $dom qu'il faudrait ajouter $newens :
Code :
$dom->appendChild($newens);
plutot que :
Code :
1
2
$util = $dom->getElementsByTagName("Utilisateur")->item(0);
$util->appendChild($newens);
???
non c'est pour createElement
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 14h30   #5
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
Citation:
Envoyé par stealth35 Voir le message
non c'est pour createElement
ben si, pour le positionner dans le document (l'arbre xml)
http://eusebius.developpez.com/php5dom/
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 14h41   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par vorace Voir le message
ben si, pour le positionner dans le document (l'arbre xml)
http://eusebius.developpez.com/php5dom/
non puisqu'il $util est déjà dans le document
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 14h47   #7
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
Citation:
Envoyé par stealth35 Voir le message
non puisqu'il $util est déjà dans le document
oui, il l'a créé :
Code :
$newens = $dom->createElement("Utilisateur");
mais à aucun moment il l'a intégré au document...
la preuve c'est qu'il arrive pas à le récupérer de cette manière :
Code :
1
2
$util = $dom->getElementsByTagName("Utilisateur")->item(0);
$util->appendChild($newens);
en plus si tu rajoute :
Code :
$dom->appendChild($newens);
devant ca ligne problématique, y a plus d'erreur.
je parle de cette ligne :
Code :
$util = $dom->getElementsByTagName("Utilisateur")->item(0);
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 14h53   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
ah oui je vois ce que tu veux dire, juste dans les 2 lignes y'avait rien de faux, mais en effet à aucun moment il est mit le Utilisateur
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 16h41   #9
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
Citation:
Envoyé par stealth35 Voir le message
ah oui je vois ce que tu veux dire, juste dans les 2 lignes y'avait rien de faux, mais en effet à aucun moment il est mit le Utilisateur
rien de faut...?!
ca ressemble à un objet encastré dans lui même...
enfin une partie de cet objet...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 16h56   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par vorace Voir le message
rien de faut...?!
ca ressemble à un objet encastré dans lui même...
enfin une partie de cet objet...
dans les 2 lignes rien de faux, quand on regarde le reste du code la oui c'est pas logique.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 18h16   #11
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
pour une fois t'es d'accord avec moi...
( sans aucune arrière pensée )
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h08.


 
 
 
 
Partenaires

Hébergement Web