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 :

[DOM] Problème avec une requete XPATH


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut [DOM] Problème avec une requete XPATH
    Bonjour,

    Je vous explique mon problème, j'ai une première page php, dans laquelle il y a un formulaire, dans lequel une personne va entrer des informations, et aussi je génère un id, et j'envoie le tout à une deuxième page php, qui va stocker les informations reçues avec le id dans un fichier xml "resultats.xml", puis affiche aussi un autre formulaire, dans lequel des questions sont posés à l'utilisateur. Ces réponses sont envoyées à une troisième page php, avec encore une fois le même id. Dans cette troisième page, j'essaye d'ajouter ces réponses, dans le fichier xml, dans la balise résultat qui a comme id, celui envoyé à cette troisième page, pour que ces réponses soient ajoutés avec les informations de la même personne. sauf que j'ai un problème avec la requête XPATH.

    La structure de mon fichier XML est la suivante:

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <resultats>
      <resultat/>
      <id>1</id>
      <nom>nom</nom>
      <age>1830</age>
      <vue>oui</vue>
      <tvue>myopie</tvue>
      <cv1>true</cv1>
      <cv2>true</cv2>
      <cv3>true</cv3>
      <cv4>true</cv4>
      <cv5>true</cv5>
      <cv6>true</cv6>
    </resultats>
    Bien évidemment à cause du problème dont je vous ai parlé, je n'arrive pas à ajouter les balises <cv> .

    Maintenant le code que j'utilise, dans lequel il y a ma requête XPATH:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $dom = new DomDocument();
            $dom->preserveWhiteSpace = FALSE;
            $dom->formatOutput = TRUE;
            $dom->load('resultats.xml');
     
    		$xpath = new DomXPath($dom);
    		$id = $_POST['id'];
    		$res = $xpath->query('/resultats/resultat[id = "' . $id . '"]');
    		$eval = $res->item(0);
    Ça c'est la première partie du code, après quelques traitements, je crée un élément puis je l'ajoute dans le fichier XML, à la variable $eval :

    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
    $q1 = $dom->createElement('cv1', $r1);
    		$q2 = $dom->createElement('cv2', $r2);
    		$q3 = $dom->createElement('cv3', $r3);
    		$q4 = $dom->createElement('cv4', $r4);
    		$q5 = $dom->createElement('cv5', $r5);
    		$q6 = $dom->createElement('cv6', $r6);
     
     
     
    		$eval->appendChild($q1);
    		$eval->appendChild($q2);
    		$eval->appendChild($q3);
    		$eval->appendChild($q4);
    		$eval->appendChild($q5);
    		$eval->appendChild($q6);
     
    		$dom->save('resultats.xml');
    Résultat, un message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to a member function appendChild() on a non-object in C:\Users\MoW\Documents\IND6412\Tp2\test2.php
    La ligne qui cause l'erreur est celle ou je fais le appendChild ...

    Pouvez vous m'aider à régler ce problème SVP?

    Merci.


    ...

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    L'élément id n'est pas l'enfant de résultat donc l'expression XPath est effectivement fausse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = $xpath->query('/resultats[id = "' . $id . '"]/resultat');

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par julp Voir le message
    L'élément id n'est pas l'enfant de résultat donc l'expression XPath est effectivement fausse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = $xpath->query('/resultats[id = "' . $id . '"]/resultat');
    En effet, j'ai fait une petite erreur dans la création du fichier XML, Corrigée :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <resultats>
      <resultat>
        <id>1</id>
        <nom>nom</nom>
        <age>1830</age>
        <vue>oui</vue>
        <tvue>myopie</tvue>
        <cv1>true</cv1>
        <cv2>true</cv2>
        <cv3>true</cv3>
        <cv4>true</cv4>
        <cv5>true</cv5>
        <cv6>true</cv6>
      </resultat>
    </resultats>
    Sauf que l'erreur persiste le message d'erreur (Call to a member function appendChild() on a non-object) est encore là pour la même ligne de code! Sachant que je n'ai pas modifié le code montré dans mon premier message (j'ai juste corrigé le code de création du fichier XML qui se trouve dans un autre fichier php)

    Voyez vous l'erreur?

    Merci

    ...

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    En ce cas, tout m'a l'air correct ayant testé. A tout hasard, cela ne pourrait-il pas venir de votre paramètre :
    (erreur de méthode (GET/POST), par exemple ou oubli de retransmission de cette valeur qui viendrait déjà d'ailleurs).

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par julp Voir le message
    En ce cas, tout m'a l'air correct ayant testé. A tout hasard, cela ne pourrait-il pas venir de votre paramètre :
    (erreur de méthode (GET/POST), par exemple ou oubli de retransmission de cette valeur qui viendrait déjà d'ailleurs).
    Non, j'ai bien vérifié si la valeur d'id est correcte ou pas. Il n'y a pas de problèmes avec ... Il ne veut rien savoir il dit que je peux pas applique un appendChild à eval, c'est vraiment bizarre. Je vais encore voir ... Sinon au pire je vais changer de tactique et utiliser plusieurs fichiers XML


    Merci.


    ...

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    Salut,

    Erreur débile, j'avais enlevé le premier slash dans ma requête XPATH pour tester, et j'ai oublié de le remettre, je m'excuse pour la perte de temps. Donc en effet ta première réponse règle le problème

    Merci


    ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mysql - problème avec une requete ajout
    Par mekongboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/08/2006, 18h17
  2. problème avec une requete utilisant LIMIT
    Par kow_Ced dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/08/2006, 16h01
  3. problème avec une requete
    Par PAYASS59 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/03/2006, 13h12
  4. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39
  5. [debutant]Problème avec une requete ....
    Par MichMich29 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/07/2005, 17h19

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