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

EDI, CMS, Outils, Scripts et API PHP Discussion :

flux xml en php


Sujet :

EDI, CMS, Outils, Scripts et API PHP

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut flux xml en php
    Bonjour à tous,

    Je posséde un fichier xml donc je dois afficher son contenu sur la home d'un site.
    Le problème, je ne sais pas comment m'y prendre donc j'imagine je dois analysé adresse xml puis le parser mais comment je peux faire ca avec le language php?
    Existe-il un tutoriel expliquant comment faire?

    merci pour vos aides,

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    Le plus simple est d'utiliser SimpleXML.
    Tu trouveras des exemples dans la doc PHP http://fr.php.net/simplexml
    N'hésite pas si tu as des questions

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    hello,

    J'ai développé une fonction qui me permet de lire et afficher à partir d'un fichier xml. Mon problème vient d'un foreach qui ne veux pas s'afficher, une erreur invalid argument. si quelqu'un avait déja résolu ce probléme

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    <?php
     
    function lit_xml($fichier,$item,$champs) {
       // on lit le fichier
       if($chaine = @implode("",@file($fichier))) {
          // on explode sur <item>
          // Dans l'exemple il s'agit de 'profil'
          $tmp = preg_split("/<\/?".$item.">/",$chaine);
          // pour chaque <item> donc tous les profils
          for($i=1;$i<sizeof($tmp)-1;$i+=2)
             // on lit les champs demandés <champ> 
             foreach($champs as $champ) {
                $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
                // on ajoute l'élément au tableau
                $tmp3[$i-1][] = @$tmp2[1];
             }
          // et on retourne le tableau dans la fonction
          return $tmp3;
       }
    }
     
    // Lecture du FLUX XML sur le serveur
    $xml = lit_xml("http://","champ",array("champ1","champ2","champ3"));
     
    // Une petite boucle suffit pour retrouver les élément du tableau
    // retourné dans la fonction lit_xml()
     
    foreach($xml as $row) {// ici lz probléme argument invalid
    echo("<div style=\"background-image:url('img/ranking/bg_top5.gif');\"");
    	echo ("<table><tr>");
      echo ("<td><a href=\"$row[2]\"><img src=\"$row[0]\"></a></td>");
     
      echo ("<td style=\"color:#FFFFFF;font-weight:bold;\" ><a href=\"$row[2]\">$row[1]</a></td>");
      echo ("</div>");
     
      }
     
     
    ?>
    merci de m'aidé s'il vous plait :)

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    Re,
    Commence par enlever les @ qui cachent les erreurs
    Pourquoi ne pas utiliser les API XML telles SimpleXML ou DOM ??

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    pcq, je n'ai pas reussi a voir comment implémenté
    les erreur suivante sont:
    Warning: file() [function.file]: php_network_getaddresses: getaddrinfo failed: Name or service not known in.....

    qqn pourrais m'expliqué comment résoudre le problème?
    merci d'avance

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par samspitz Voir le message
    pcq, je n'ai pas reussi a voir comment implémenté
    Bon, si tu me dis exactement ce dont tu as besoin et que cela ne nécessite pas trop de travail je pourrais te montrer comment faire.

    les erreur suivante sont:
    Warning: file() [function.file]: php_network_getaddresses: getaddrinfo failed: Name or service not known in.....
    Voilà, c'est file( ) qui échoue et effectivement, en y regardant de plus près tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml = lit_xml("http://","champ",array("champ1","champ2","champ3"));
    = Tu veux ouvrir le fichier http:// qui bien évidemment n'existe pas

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    adresse existe vraiment, c juste moi qui a retiré adresse sur le forum.
    quelle sont les autres solution possible au probleme de file?

    merci d'avance

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par samspitz Voir le message
    adresse existe vraiment, c juste moi qui a retiré adresse sur le forum.
    quelle sont les autres solution possible au probleme de file?
    Avant de trouver des solutions il faut identifier le pb.

    Que te donne le script suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fp = fopen('http://tonsite.com/data.xml', 'r') ;
    var_dump($fp) ;
    ??

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    erreur suivante:
    Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in
    bool(false)

    il ya une solution a ca?

    merci de ton aide

  10. #10
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par samspitz Voir le message
    erreur suivante:
    Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in
    bool(false)
    Et si tu remplaces le fopen( ) par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fp = fopen('http://www.google.fr/', 'r') ;
    ??

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    ca donne:
    resource(21) of type (stream)

    ???

    merci

  12. #12
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    OK, donc le fichier que tu tentes d'ouvrir n'est pas accessible via HTTP.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    ca marche en localhost! mais pas en prod. si je peux pas ouvrir ce serait pareille pour les deux non?

  14. #14
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    ca marche en localhost! mais pas en prod.
    Le script que je t'ai fourni fonctionne en dev et en prod ?

    si je peux pas ouvrir ce serait pareille pour les deux non?
    Tout dépend de la valeur de l'URL. Ex. : si tu y places une IP privée ça ne fonctionnera que depuis le réseau local.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    oui le meme resultat sur les deux.
    je fais depuis une url et non ip

  16. #16
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    Je résume :
    - Sur script en prod : nom de domaine ciblé accessible
    - Sur script en dév : nom de domaine ciblé inaccessible
    - Par ailleurs google.fr est acessible en dév et en prod

    Qui héberge le serveur de prod ? Est-ce que les serveurs de dév et de prod sont situés sur le même réseau ?
    N'y aurait-il pas un .htaccess ou autre système de protection ?

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    c'est en prod, ca ne marche pas et en dev ca marche. cela vient-il du probleme du fichier xml accessible en http ou bien du script php?
    si cela vient du fichier xml, pourquoi ca marche en dev? pas en prod?

    ca devait être si facile que cela devient difficile pour un novice comme moi

    merci de votre aide et en esperant qqn sait comment le resoudre

    merci

  18. #18
    Membre régulier
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 90
    Points
    90
    Par défaut
    Bonjour,
    je viens d'analyser ton problème, laisse moi te donner des pistes des solutions :

    1. Partant de l'architecture en prod et en dev, j'aimerais que tu voies si c'est la même archi
    2. en prod, as tu activé le virtual host? et en dev,non .j'opte pour ce point.
    Tu n'as pas le droit d'accéder sur certains fichiers, essaie de voir cela avec ton hébergeur.

    N'existe pas de me tenir au courant.

    Clt

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    alors oui, ce n'ai pas a meme archi.
    j'utilise wamp qui me permet d'avoir apache, etc.....==>dev
    puis un serveur de test pour un premier rendu. le problème vient bien du serveur de test. pk ca j'en sais rien.

    en tt cas, merci de votre patience sur ce sujet.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Points : 62
    Points
    62
    Par défaut
    Mon problème étant résolu.
    la résolution à était d'appeler le fichier xml sur un autre serveur.

    Merci de vos conseils et surtout d'avoir suivi cette affaire de prés.

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

Discussions similaires

  1. Parseur de flux xml (en php)
    Par missmiss89 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/07/2011, 21h01
  2. Parseur de flux xml (en php)
    Par missmiss89 dans le forum Langage
    Réponses: 1
    Dernier message: 07/07/2011, 17h22
  3. [PHP 4] Récupérer le contenu d'un flux XML en PHP
    Par Tony36 dans le forum Langage
    Réponses: 9
    Dernier message: 24/08/2010, 17h23
  4. aide parser flux xml en php
    Par calitom dans le forum Langage
    Réponses: 4
    Dernier message: 15/05/2009, 10h28
  5. Renvoyer un flux XML AJAX - PHP
    Par sliderman dans le forum Langage
    Réponses: 2
    Dernier message: 03/01/2008, 14h25

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