IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] [DOM] Ajouter un attribut [Débutant(e)]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    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 : 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
    <?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 ?

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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 ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    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

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Tu as pu ajouter le noeud "concour", avec son fils "cont", mais pas les attributs ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    Non même pas les noeuds ..

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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 ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    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 ..

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    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
    <?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 ..

  10. #10
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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 ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    Tout a fait

  12. #12
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Klimium
    Tout a fait
    Mais dans le dernier script que tu donnes, tu n'as pas fait de addChild ?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    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 ..

  14. #14
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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 !

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    Ok mais comment pourrais-je enregistrer a la suite du reste de XML ?

  16. #16
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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).

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    Merci bien, je vais aller lire tout ça, je vous recontacte si j'ai un problème

    A+,
    Klimium

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    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 : 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
    $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

  19. #19
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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...

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

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

    A+,
    Klimium

Discussions similaires

  1. [DOM] ajouter un attribut à la balise <BODY>
    Par GoldenEyes dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 25/06/2008, 13h33
  2. [Manipulation DOM] Ajouter un DIV "autour" d'un A
    Par psychomatt dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/02/2006, 15h18
  3. [SimpleXML] Problème sur simpleXML pour ajouter de nouveaux noeuds
    Par Shandler dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/02/2006, 13h55
  4. [DOM] Ajouter un bouton avec un nouveau style
    Par Mehdi Feki dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/12/2005, 08h56
  5. Ajout d'attribut à l'élément "Body"
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 07/04/2003, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo