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 le tutoriel RSS


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 64
    Points
    64
    Par défaut [DOM] Problème avec le tutoriel RSS
    J'utilise un tutoriel de Developpez.com pour mettre en place un système de RSS. J'utilise le code fourni avec PHP 5. Je rencontre un problème et j'ai des qq questions complémentaires:

    1/ j'arrive à générer un fichier XML avec la fonction a/ j'aimerais que le fichier généré possède des retours chariots et une indentation (tabulations) qui me permettent de le relire facilement dans un éditeur de texte. Est-ce possible?
    b/ j'aimerais tracer le contenu des noeuds créés pour vérifier dans mes logs qu'ils ont été générés avec les informations voulues. Pour afficher le contenu de la racine par exemple, j'ai utisé la fonction Les logs ne m'affichent que "root = DOMElement Object()" mais sans son contenu, existe-t-il un moyen simple d'afficher le contenu?

    2/ je n'arrive pas à exécuter correctement la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addOneNews($file, $title, $timestamp, $author)
    Je lève une exception sur la ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $element_item = $element_channel->appendChild($element_item);
    qui m'explique que l'objet "$element_item" est null. Etonnant car le fichier était pourtant bien généré comme expliqué au premier point...

    Si qq a qq indices, 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 778
    Points
    17 778
    Par défaut
    1. a)
      Dans createXML et après $file = new DOMDocument("1.0");, ajoutez :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $file->formatOutput = TRUE;
      b) La méthode saveXML est bien plus adéquate :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      $fil = createXML();
      # ...
      echo $fil->saveXML();
    2. Un élément channel ne passe visiblement pas la validation avec un attribut id ... Toutefois pour corriger l'erreur, au choix :
      Remplacez dans createXML :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $element_channel->setAttribute("id", "news");
      Par :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $element_channel->setAttribute("xml:id", "news");
      Ou, remplacez :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $element_channel = $file->getElementById('news');
      Par :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      $xpath = new DomXPath($file);
      $element_channel = $xpath->query('/rss/channel[@id="news"]')->item(0);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup, c'est impeccable...
    Peut-être peut-on prévenir l'auteur de ce tutoriel pour une petite MAJ afin d'éviter de futures galères - j'ai pas trouvé où par contre?

    J'en profite pour enchainer sur une autre question:

    j'ai codé l'ajout d'une nouvelle news en BDD qui est désormais suivi du code de création d'une news dans le flux RSS. Cependant, cette news apparait à la suite des autres news, hors il me semble que sur les flux RSS, les plus récentes apparaissent en premier. Comment faire pour que la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addOneNews($file, $title, $timestamp, $author)
    insère une news en premier dans le fichier XML?

    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 778
    Points
    17 778
    Par défaut
    Tout est relatif, car si vous ajoutez une nouvelle "donnée" (avec DOM directement) qui chronologiquement s'intercale entre deux autres, elle ne sera pas non plus à sa place

    Créez-vous le fil à partir de la base de données ? Si oui, il vous suffit d'ajouter la clause ORDER BY timestamp ASC (tri croissant) ou DESC (tri décroissant).


    PS : pour le contacter, c'est par .

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    oui, je crée le fil à partir de la BDD

    j'avais à l'origine en tête d'ajouter un élément au fil à chaque insertion en BDD, mais effectivement, le plus simple est de regénéré entièrement le fil - du moins les X derniers - avec les clauses "order by" et "limit".

  6. #6
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Merci beaucoup à vous deux pour les corrections

    Je vais mettre à jour l'article dès que j'aurai un peu de temps

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

Discussions similaires

  1. [androMDA] - quelques problèmes avec le tutoriel
    Par spidetra dans le forum Maven
    Réponses: 6
    Dernier message: 31/03/2008, 15h55
  2. Réponses: 1
    Dernier message: 17/09/2006, 16h31
  3. [DOM] Problèmes avec DOMDocument
    Par japey dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 23/05/2006, 12h45
  4. [DOM] problème avec replaceNode
    Par lusiole dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/05/2006, 11h08
  5. probléme avec autocompletition ( tutoriel D.cabasson )
    Par kichemans dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/04/2006, 13h34

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