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. #21
    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, ça n'affiche aucune erreur.
    Quand on développe il faut afficher toutes les erreurs. Alors en tête de ton script, tu vas mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL);
    Citation Envoyé par Klimium
    Par contre je ne sais pas quoi mettre comme attribut dans cette fonction ?
    Beeen... Ca dépend de ce que tu veux faire. Explique ce que tu veux faire faire à cet appel de méthode, et peut-être qu'on pourra t'orienter.

  2. #22
    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
    Ce que je veux faire ?
    Bah enregistrer une nouvelle balise en y mettant les attributs et qu'il s'inscrive sur le fichier xml.

    PS : je viens de tester le "error_reporting(E_ALL);", je n'ai aucune erreur qui s'affiche.

    EDIT : je viens de remarquer que "grâce" a "error_reporting(E_ALL);" il n'y avait pas d'erreur mais que tout s'enregistrait bien

    Merci bien a toi

  3. #23
    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
    [B]EDIT : je viens de remarquer que "grâce" a "error_reporting(E_ALL);" il n'y avait pas d'erreur mais que tout s'enregistrait bien
    Je vais pas chercher la petite bête alors...

  4. #24
    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
    J'ai encore 2 questions : Comment les triés par ordre inverse ? Et comment en sélectionné les 4 premiers seulement ? (pour ne pas toujours refaire la boucle).

    Merci

  5. #25
    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
    Comment les triés par ordre inverse ?
    Tu veux dire comment les lire en partant du dernier ? Ben les objets DomNodeList ont un attribut length, et tu peux accéder aux éléments par la méthode item, donc après c'est pas très dur d'écrire une boucle qui parcoure un DomNodeList dans le sens inverse (je suppose que $liste est le DomNodeList qui contient les noeuds d'un niveau donné) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($i=$liste->length-1; $i>=0, $i--) {
      $noeudATraiter = $liste->item($i);
      ...
    }
    Si c'est pour les insérer dans un ordre précis, tu as insertBefore

    Citation Envoyé par Klimium
    Et comment en sélectionné les 4 premiers seulement ?
    Même principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $quatrePremiers = array();
    for($i = 0; $i < 4 && $i < $liste->length; $i++) {
      $quatrePremiers[] = $liste->item($i);
    }

  6. #26
    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

    Seulement les données ne s'affichent pas, j'ai essayé plusieurs trucs mais sans résultat.

    Mon code 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
    <?php
    			$dom = new DomDocument;
    			$dom->load("actifs.xml");
    			$listeconc = $dom->getElementsByTagName('concour');
     
    			$conc = array(); 
    			for($i = 0; $i < 4 && $i < $listeconc->length; $i++) {  
    			$concour[] = $listeconc->item($i); 
     
    					?>
    				<div class="concour">
    					<h3><?php echo $concour['nom']; ?></h3>
    }
    Mon xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" standalone="yes"?>
    <concours>
    		<concour>
    			<nom>xxx</nom>
    			<auteur>xxxx</auteur>
    			<url>x</url>
    			<debut>xx</debut>
    			<fin>xxxxx</fin>
    			<publ>xxxxxx</publ>
    			<tboutique>xxxxxxx</tboutique>
    		</concour>
    </concours>
    Merci

  7. #27
    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
    Il te manque une balise php ouvrante

  8. #28
    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 ce n'est pas ça le problème, j'ai pas fait expret, c'est parce que j'ai coupé le texte car je suppose que ça ne t'intéresse pas le blabla Donc tout est bien fermé et ouvert

  9. #29
    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
    Je crois qu'il y a une confusion entre $conc et $concour
    De plus $concour['nom'] n'existe pas

  10. #30
    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
    J'ai corriger, j'ai mis : $conc[] = $listeconc->item($i);

    Après je met : $conc[0]['non']

    Mais ça n'affiche rien, ça laisse blanc.

  11. #31
    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
    Après je met : $conc[0]['non']
    Mais ça n'affiche rien, ça laisse blanc.
    Parce que $conc[0] n'est pas un tableau, c'est un DomNode... Il faut extraire le fils qui s'appelle "nom" pour avoir sa valeur, en parcourant son attribut childNodes par exemple...

  12. #32
    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
    Pourrais-tu être un peu plus précis ?
    Par un exemple si c'est possible

    Merci

  13. #33
    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
    Pourrais-tu être un peu plus précis ?
    Par un exemple si c'est possible

    Merci
    tu as lu le tuto ? tu as lu la doc ?
    Je commence à douter...

  14. #34
    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
    J'ai relus cette partie : http://fr.php.net/manual/fr/function...elist-item.php

    Mais quand je veux afficher ça m'affiche tous les noeud de la balise, je n'arrive pas par exemple a prendre le noeud "nom".
    J'ai donc ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $listeconc = $dom->getElementsByTagName('concour');
     
    			for($i = 0; $i < 4 && $i < $listeconc->length; $i++) {  
    			$key = $listeconc->item($i); 
    echo $key->nodeValue;
    Ca m'affiche donc tous les noeud, alors j'essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $key->nom->nodeValue;
    Et ça ça n'affiche rien.

    ?

  15. #35
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $listeconc = $dom->getElementsByTagName('concour');
     
    			for($i = 0; $i < 4 && $i < $listeconc->length; $i++) {  
    			$key = $listeconc->item($i); 
    echo $key->nodeValue;
    Ca m'affiche donc tous les noeud
    Tu m'avais demandé comment isoler les quatre premiers noeuds d'un DomNodeList. Ici ta liste tu la construis avec getElementsByTagName, tu obtiens donc un DomNodeList qui a une seule entrée : le noeud unique "concour". S'il y avait 10 noeuds "concour", tu obtiendrais les quatre premiers...

    Citation Envoyé par Klimium
    alors j'essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $key->nom->nodeValue;
    Et ça ça n'affiche rien.
    J'aimerais bien savoir où tu as vu qu'on pouvait utiliser cette syntaxe pour accéder au fils qui s'appelle "nom"...

  16. #36
    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
    tu obtiens donc un DomNodeList qui a une seule entrée : le noeud unique "concour". S'il y avait 10 noeuds "concour", tu obtiendrais les quatre premiers...
    Et bien c'est ce que je veux : voir la quatre dernières entrées ..

    Maintenant c'est pour séparer les différents noeuds qui sont contenus dans "$listeconc->item($i)".

    J'aimerais bien savoir où tu as vu qu'on pouvait utiliser cette syntaxe pour accéder au fils qui s'appelle "nom"...
    Bah je ne l'ai vu nulle part donc j'essaie des trucs ..

  17. #37
    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
    Bah je ne l'ai vu nulle part donc j'essaie des trucs ..
    Il y a une curieuse méthode qui consiste à lire LA DOC. Je pense que j'arriverai pas à te la faire adopter, mais je vais essayer encore un peu.

    Dans la doc on trouve des tas d'outils pour accéder aux fils d'un noeud : firstChild, lastChild, childNodes (qui te renverra un DomNodeList), et aussi previousSibling et nextSibling qui permettent de se balader entre noeuds "frères"...

  18. #38
    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
    Désolé de ne pas répondre à tes attendes ..

    Mais il y a un truc que je ne pige par c'est par exemple aller chercher un noeud qui se trouve dans une variable tel que : $child = $listconc->last_child();

    Je n'ai pas trouver la solution a mon problème sur la doc que j'ai déjà parcouru près de 5fois ..

    Merci.

  19. #39
    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
    Mais il y a un truc que je ne pige par c'est par exemple aller chercher un noeud qui se trouve dans une variable tel que : $child = $listconc->last_child();
    Alors déjà la méthode last_child n'existe pas (c'est pour ça que tu ne le trouves pas dans la doc). Ce qui existe, c'est l'attribut lastChild des objets de la classe DomNode.
    Ensuite $listconc, rien qu'au nom de la variable, j'aurais tendance à dire que ça a à voir avec une liste (DomNodeList ?) et pas avec un noeud.

    Peux-tu expliquer ton problème de manière claire ? Quel type d'objet as-tu dans ta variable, et que souhaites-tu extraire ?

  20. #40
    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
    Bah comme l'autre fois,
    les 4 derniers concours.

    Voilà la variable listeconc: $listeconc = $dom->getElementsByTagName('concours');

    Pour ce qui est du xml, il est dans un de mes postes précédents.

    Merci;

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