Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche 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 02/12/2006, 19h19   #1
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Par défaut [SimpleXML] [DOM] Ajouter un attribut

Bonjour,

J'ai découvert cette fonction : http://be2.php.net/manual/fr/functio...t-addchild.php
Je l'ai essayé mais ça ne marche pas ..

Mon code :
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
<?php
$fichierXml = <<<XML
<?xml version='1.0' standalone='yes'?>
<concours>
	<actifs>
		<concour nom="" auteur="" url="" debut="" fin="" publ="" tboutique="">
			<cont></cont>
		</concour>
	</actifs>
</concours>
XML;
 
$xml = new SimpleXMLElement($fichierXml);
 
$concour = $xml->actifs[0]->addChild('concour');
$concour->addAttribute('nom', $titre);
$concour->addAttribute('auteur', $auteur);
$concour->addAttribute('url', $url);
$concour->addAttribute('debut', $debut);
$concour->addAttribute('fin', $fin);
$concour->addAttribute('publ', $publ);
$concour->addAttribute('tboutique', $tboutique);
$concour->addChild('cont', $cont);
?>
Comment réussir a ajouté les attributs et autres ?
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2006, 19h41   #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
Bonjour
"ça ne marche pas" n'est en général pas considéré comme un diagnostic suffisant, les gens aiment avoir des informations plus détaillées avant de devoir se plonger dans ton code.

Tu es bien sous PHP5 ?
Tu as des messages d'erreur ?
Qu'est-ce qui devrait se passer, qu'est-ce qui se passe ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2006, 20h00   #3
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Bonjour

Oui je suis bien sous PHP5 vu que les autres opérations fonctionnent.
Il n'y a pas d'erreur, et normalement comme je l'ai dit plus haut j'aimerais rajouter des balises avec attributs dans mon code XML.

J'espère avoir été clair.

Klimium
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2006, 20h03   #4
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
Tu as pu ajouter le noeud "concour", avec son fils "cont", mais pas les attributs ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2006, 21h05   #5
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Non même pas les noeuds ..
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2006, 21h09   #6
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 Klimium
Non même pas les noeuds ..
- Comment tu vérifies ce que contient ta variable ? Montre le code
- Tu obtiens le fichier XML original ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 08h38   #7
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Je ne vérifie pas ce que contient le code mais je vois que après si je vais sur la page ou je les affiches, il n'y est pas ..
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 09h24   #8
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 Klimium
Je ne vérifie pas ce que contient le code mais je vois que après si je vais sur la page ou je les affiches, il n'y est pas ..
Montre comment tu affiches stp
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 09h54   #9
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
			include 'actifs.php'; // Fichier avec le xml
 
			$xml = new SimpleXMLElement($fichierXml);
 
				foreach ($xml->actifs->concour as $concour) {
					?>
				<div class="concour">
					<h3><?php echo $concour['nom']; ?></h3>
 
						<p class="infos"><strong>Auteur : </strong><?php echo $concour['auteur']; ?> - <a href="<?php echo $concour['url']; ?>"><strong>Lien vers le concour</strong></a> - <strong>Date d&eacute;but : </strong><?php echo $concour['debut']; ?> - <strong>Date fin : </strong><?php echo $concour['fin']; ?></p>
 
						<p class="description"><strong>Description : </strong><?php echo $concour->cont; ?></p>
				</div>
					<?php
				}
			?>
Voilà j'utilise SimpleXml ..
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 10h19   #10
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
Et tu vois les balises "concour" que tu as mises à la main dans le XML de départ, mais pas celles que tu as rajoutées avec addChild ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 11h02   #11
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Tout a fait
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 11h03   #12
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 Klimium
Tout a fait
Mais dans le dernier script que tu donnes, tu n'as pas fait de addChild ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 14h36   #13
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Non, enfaite la page qui affiche c'est pour que les visiteurs voyent les concours disponibles, l'autre script (avec les addChild) est fait pour enregistrer un nouveau concours .. Les deux scripts sont séparés ..
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 14h38   #14
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
Tu as fait des addChild sur la variable $xml. Si tu ne sauvegardes pas cette variable (dans un fichier par exemple, parce que l'exemple des chaînes de caractères de la doc, c'est un peu simpliste), alors il ne faut pas espérer retrouver l'information dans un autre script !
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 15h24   #15
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Ok mais comment pourrais-je enregistrer a la suite du reste de XML ?
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 15h27   #16
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 Klimium
Ok mais comment pourrais-je enregistrer a la suite du reste de XML ?
Je ne connais pas SimpleXML, je ne l'ai jamais utilisé, mais après avoir parcouru la doc, il semblerait qu'il n'y a pas de fonctions d'écriture... curieux... Que quelqu'un me corrige si j'ai laissé passer quelque chose.

Si tu veux une extension XML complète il y a DOM (un tuto sur DOM), c'est juste un peu plus complexe (mais plus complet).
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2006, 19h39   #17
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Merci bien, je vais aller lire tout ça, je vous recontacte si j'ai un problème

A+,
Klimium
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 17h36   #18
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Bonsoir a tous

J'ai essayer ton tutoriel, mais j'ai un problème au niveau de l'écriture (encore)

Ca n'écrit rien dans mon fichier xml.

Mon code actuel est le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$dom = new DomDocument;
			$dom->load("actifs.xml");
 
			$nouveauconc = $dom->createElement("concour");
			$nouveauconc->setAttribute("nom", $titre);
			$nouveauconc->setAttribute("auteur", $auteur);
			$nouveauconc->setAttribute("url", $url);
			$nouveauconc->setAttribute("debut", $debut);
			$nouveauconc->setAttribute("fin", $fin);
			$nouveauconc->setAttribute("publ", $publ);
			$nouveauconc->setAttribute("tboutique", $boutique);
 
			$nouveauconc->appendChild("");
			$concours = $dom->getElementsByTagName("concours")->item(0);
			$concours->appendChild($nouveauconc);
 
			$dom->save('actifs.xml');
Merci d'avance.
Klimium
Klimium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 21h50   #19
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
Code :
$nouveauconc->appendChild("");
Ici normalement tu as eu un message d'erreur te disant que appendChild prend pour argument un DomNode et pas une chaîne de caractères...

Si tu veux qu'on t'aide, affiche toutes tes erreurs et donne-les-nous... ça aide...
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 06h26   #20
Nouveau Membre du Club
 
Inscription : octobre 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 171
Points : 32
Points : 32
Bonjour,

Non, ça n'affiche aucune erreur. Par contre je ne sais pas quoi mettre comme attribut dans cette fonction ?

A+,
Klimium
Klimium 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 18h57.


 
 
 
 
Partenaires

Hébergement Web