Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 02/10/2006, 11h49   #1
Membre régulier
 
Inscription : octobre 2005
Messages : 258
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 258
Points : 92
Points : 92
Envoyer un message via MSN à vacknov Envoyer un message via Yahoo à vacknov
Par défaut Erreur: impossible de sauvegarder les données (php et XML)

Bonjour;

J'ai le message d'erreur Fatal error: Call to a member function appendChild()
on a non-object in C:\wamp\www\newsxml.php on line 30

lorsque Je veux ajouter un enregistrement dans le fichier xml suivant via DOM en php.

Code :
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
 
<?xml version="1.0" standalone="yes"?>
 
<!DOCTYPE Base[
<!ELEMENT Base (conseiller)>
<!ELEMENT conseiller (enregistrement)>
<!ATTLIST conseiller id ID #REQUIRED>
<!ELEMENT enregistrement (nom,prenom,adresse)>
<!ATTLIST enregistrement date CDATA #REQUIRED>
<!ATTLIST enregistrement matricule CDATA #REQUIRED>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT adresse (#PCDATA)>
]>
 
<Base>
<conseiller id="Econseiller">
	<enregistrement date="01/10/2006" matricule="03">
        	<nom>NOM1</nom>
        	<prenom>PRENOM1</prenom>
		<adresse>Ad1</adresse>
	</enregistrement>
 
	<enregistrement date="30/09/2006" matricule="02">
        	<nom>NOM2</nom>
        	<prenom>PRENOM2</prenom>
		<adresse>Ad2</adresse>
	</enregistrement>
 
 
</conseiller>
</Base>
Depuis un formulaire contenant le champs (matricule,nom,prenom et adresse) je poste les données
pour la sauvegarde dans le fichier xml.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
$file="c:\test.xml";
$dom=new DOMDocument();
if(file_exists($file) && filesize($file)>0)
$dom->load($file);
 
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$adresse=$_POST['adresse'];
 
$conseiller=$dom->getElementById("Econseiller"); // ligne 28
 
$enregistrement=$dom->createElement("enregistrement"); // ligne 29
 
$enregistrement=$conseiller->appendChild($enregistrement); // ligne 30
.
.
.
Lorsque j'ignore les lignes 28 et 30 et que j'affecte au noeuds enregistrement les enfants
(nom,prenom et adresse) la sauvegarde se fait dans le fichier xml mais dans le noeuds Base.
Ligne 28: j'ai aussi essayé de charger le noeuds conseiller avec getElementsByTagName idem.

merci d'avance pour votre aide.
vacknov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 12h07   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
qu'y a-t-il dans $conseiller ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 12h08   #3
Membre expérimenté
 
Inscription : octobre 2004
Messages : 872
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 872
Points : 582
Points : 582
salut
le probleme c'est que getElementByID renvoi un objet DOMElement or appenChild est une methode de l'objet DOMNode

voici pour l'erreur, pour la solution ca doit par etre bien mechant mais je ne l'ai pas pour le momment
jeff_! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 12h14   #4
Membre régulier
 
Inscription : octobre 2005
Messages : 258
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 258
Points : 92
Points : 92
Envoyer un message via MSN à vacknov Envoyer un message via Yahoo à vacknov
Citation:
Envoyé par Eusebius
qu'y a-t-il dans $conseiller ?
comme l'a dit jeff: $conseiller est un DomElement. je pensais qu'en faisant
Code :
1
2
 
$conseiller=$dom->getElementById("Econseiller");
Je me positionnais sur le noeuds conseiller. comme ici
http://baptiste-wicht.developpez.com/tutoriel/php/rss/

Dans la partie : Methode avec php un peu en dessous.
le fichier php a la même structure que le mien sauf que je ne comprends pas.
vacknov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 12h43   #5
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par jeff_!
salut
le probleme c'est que getElementByID renvoi un objet DOMElement or appenChild est une methode de l'objet DOMNode

voici pour l'erreur, pour la solution ca doit par etre bien mechant mais je ne l'ai pas pour le momment
DomElement hérite de DomNode. Fais un cast si ça te rend moins nerveux, mais normalement ça roule.

Citation:
Envoyé par vacknov
comme l'a dit jeff: $conseiller est un DomElement.
C'est surtout ce que dit PHP qui m'intéresse. fais un var_dump dessus.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 13h44   #6
Membre régulier
 
Inscription : octobre 2005
Messages : 258
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 258
Points : 92
Points : 92
Envoyer un message via MSN à vacknov Envoyer un message via Yahoo à vacknov
Par défaut Cast

Merci.

les seuls cast que je fais jusqu'ici. sont ceux consernant les variables d'un type à un autre.

Comment vais je le faire ?
vacknov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 14h01   #7
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par vacknov
Merci.

les seuls cast que je fais jusqu'ici. sont ceux consernant les variables d'un type à un autre.

Comment vais je le faire ?
Tu te concentres sur la partie inintéressante de mon message Ne te préoccupe pas de ça pour l'instant. Que dit le var_dump ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 17h55   #8
Membre expérimenté
 
Inscription : octobre 2004
Messages : 872
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 872
Points : 582
Points : 582
Citation:
DomElement hérite de DomNode
j'aurai peut etre du regarder le constructeur de DOMNode

sans les indications du var_dump ca va etre difficile de t'aider

Personnellement je n'utilise que tres rarement getElementById, je prefere bien souvent faire une requete Xpath, cela evite de definir une DTD(bien que cela soit une bonne pratique)
si tu peut utiliser SDO je t'engage à l'utiliser tu gagnera du temps
jeff_! 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 12h48.


 
 
 
 
Partenaires

Hébergement Web