|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : novembre 2007 Messages : 88 ![]() |
Bonjour tout le monde
Pour mes cours je doit développer une application php, permettant d'ajouter/modifier/supprimer des noeud XML depuis un fichier existant, j'arrive à lire un fichier XML sans problème avec SimpleXML, mon problème ce situe lors de l'ajout, j'ai lu qu'avec SimpleXML il était tout simplement impossible d'ajouter un noeud, mon problème est que je n'y arrive pas avec l'API DOM snif Voici le fichier XML ( très basique ) Code :
Code :
quelqu'un pourrait-il m'expliquer comment je peux enregistré le noeud <personne> contenant l'élément <nom> à la suite de mon fichier XML d'avance merci de votre aide, je débute avec XML et PHP et vous prie de m'excuser si ce genre de message à déjà été poster |
||||
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() |
salut
essaye ça, j'ai rajoute " $dom->appendChild($newPersonne);" avant de sauver. Code :
|
||
|
|
00
|
|
|
#3 | ||||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Pour SimpleXML c'est possible :
Code :
Code :
(non testé) |
||||
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : novembre 2007 Messages : 88 ![]() |
merci à vous deux pour vos réponse, j'ai vue et compris ou était mes erreurs grâce à vous et ca devient de suite plus clair, voir même plus logique, celà fonctionne parfaitement maintenant
par contre je ne savais pas que c'était fesable avec SimpleXML on m'a toujours dit que c'était impossible, pourtant ca fonctionne bien aussi. mille merci à vous |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : novembre 2007 Messages : 88 ![]() |
temps que je suis dans l'élant
est-il possible de modifier et supprimer un noeud avec SimpleXML ? puis-je modifier une personne par apport à l'attribut id de personne ? donc j'ai une liste de nom, je clic sur editer et hop le formulaire pour modifier celui-ci ? idem pour la suppresion ? d'avance encore merci de votre aide |
|
|
00
|
|
|
#6 | ||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Oui, avec DOM comme avec SimpleXML (mais dans ce dernier cas il me semble que la version de PHP est à prendre en compte).
Un exemple pour la modification (réaliser dans le bloc else) : Code :
|
||
|
|
00
|
|
|
#7 | ||||
|
Membre à l'essai
![]() Inscription : novembre 2007 Messages : 88 ![]() |
merci beaucoup, j'ai compris la méthode à suivre pour enregistré la modification
seulement dans ton exemple, tu le met dans un liste déroulante, moi quand j'ai un tableau avec la liste des nom de type nom1 | Modifier | Supprimer nom2 | Modifier | Supprimer Modifier | Supprimer sont des liens, et passe en variable GET l'attribut id de personne ca donne comme lien "index.php?op=edit&id=1" pour le premier par exemple. donc quand je clic sur le lien j'arrive sur la case edit() avec le paramètre $_GET['id'] me fournissant l'id à modifier et tombe sur l'input type text mais contenant déjà le nom ( qui doit être modifier ), j'ai donc temps bien que mal essayer de modifier et j'ai ceci dans case edit(); Code :
et enfin ma case saveEdit(); Code :
je vous en demande beaucoup, et je vous remercie franchement pour tout ce que vous faite pour m'aider ps : si vous vous demandez pourquoi je veux l'afficher dans un input, c'est parceque je n'ai pas que <nom> dans <personne> ici j'ai simplifier pour moi comprendre, et j'ai pu appliquer l'ajout de noeud et d'élément à tout le contenu donc maintenant je m'attel à la modification et après à la suppression mais tous ce fait via une variable GET['id'] qui est l'id de <personne> encore merci mille fois |
||||
|
|
00
|
|
|
#8 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Activez bien l'affichage de toutes les erreurs : la méthode xpath retourne un tableau. Par conséquent, cette écriture serait plus "juste" :
Au lieu de : Cependant, il faudrait éventuellement tester le résultat de cette méthode car elle pourrait ne pas retourner de résultat ou échouer (cas à évaluer et qui pourrait se présenter suite à un accès concurrent aux données ou à une saisie manuelle de l'identifiant dans l'URL). En ce qui concerne l'option de formatage %d (associée à la fonction sprintf) : c'est simplement une habitude de ma part pour avoir un code plus lisible, qui permet aussi d'éviter les casts que l'on emploie souvent dans le cadre des requêtes SQL pour éviter les injections. Si vous préférez, vous pouvez remplacer cette écriture par une concaténation (c'est ce que vous avez fait dans votre premier code) voir une interpolation (ie : "/repertoire/personne[@id = '{$_GET['id']}']"). |
|
|
00
|
|
|
#9 | ||||
|
Membre à l'essai
![]() Inscription : novembre 2007 Messages : 88 ![]() |
oui oui Activez bien l'affichage de toutes les erreurs, c'est même devenu sistématique en mode codage.
merci pour vos explication, effectivement une fois coder celà fonctionne parfaitement, le champ affiche le nom par défaut et la fonction saveEdit Code :
il ne me reste plus qu'a pouvoir supprimer un noeud, pour ce faire j'ai une case delete(); qui comme pour l'edition récupère la variable $_GET['id'] j'ai donc essayer d'utiliser unset mais rien n'est supprimer je suppose encore un problème de ciblage, voici le code actuel Code :
Mais apparament je doit encore faire une erreur Je doit ptet vous soulez avec mes merci mais c'est une question de principe et de respect, donc je vous dit encore merci de votre aide |
||||
|
|
00
|
|
|
#10 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Désolé, en fait il faut écrire :
Au lieu de : |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : novembre 2007 Messages : 88 ![]() |
houraaa ca fonctionne :p grâce à vous je peux Ajouter/modifier/Suprrimer un noeud
j'ai toute fois encore une toute petite question pour la suppression nous devons utiliser $personneCible[0][0] Alors que pour la modification nous utilison $personneCible[0] pourtant c'est exactement la même manipulation pour la modification et pour la suppression, pourriez-vous m'expliquer pourquoi nous avons du rajouter une clé [0] pour la suppression et pas pour la modification ? Voilà c'est ma toute dernière question, après ce sujet sera résolut grâce à vous et vous en remercie encore |
|
|
00
|
|
|
#12 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Je l'ignore mais cela semble propre à la fonction unset pour un résultat d'une expression XPath. Cela peut être dû à la manière dont sont représentés en interne les éléments (les développeurs ont pu reprendre la structure du document, c'est à dire que chaque élément du résultat pourrait être plus complexe qu'il n'y paraît au sens que l'objet SimpleXMLElement ne correspondrait pas directement à un élément. Pour illustrer, prenez l'exemple de $sxml->personne qui représente l'ensemble des éléments personne, fils de la racine).
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com