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 XML] Un souci avec un script


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 233
    Par défaut [DOM XML] Un souci avec un script
    salut,

    Le code ci dessous je l'ai copié du web

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    
    <xml version="1.0" encoding="ISO-8859-1">
    <XML_EXEMPLE>
      <profil>
      	<id>200</id>
      	<prenom>Koogi</prenom>
      </profil>
      <profil>
      	<id>300</id>
      	<prenom>PSAS</prenom>
      </profil>
    </XML_EXEMPLE>
    
    <?
    // FONCTION qui va lire le fichier XML et le placer dans un tableau
    // Cette fonction sert de parseur
    
    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> donc il s'agit de 'id' et 'prenom'
             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://www.site.com/flux.xml","profil",array("id","prenom"));
    
    // Une petite boucle suffit pour retrouver les élément du tableau
    // retourné dans la fonction lit_xml()
    foreach($xml as $row) { // ligne 47
    
      echo $row[0];
      // affiche 200
      echo $row[1];
      // affiche Koogi
    
      }
    
    ?>
    Le code m'affiche le contenu du fichier XML mais en plus il affiche aussi une erreur:
    Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP 2.0\www\Untitled-1.php on line 47
    J'aimerai savoir la cause de cette erreur si vous avez une idée

    merci

  2. #2
    Membre expérimenté

    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
    Par défaut
    Parce que votre fonction lit_xml ne retourne pas un tableau comme prévu et ce n'est pas en plaçant des arobases sur les instructions pouvant poser problème que vous en aurez la cause. Cela dit, pourquoi passer par les expressions régulières alors que sous PHP 5 vous avez plusieurs possibilités standards : SimpleXML, DOM, XMLReader, XML (SAX/Expat) ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 233
    Par défaut
    Merci julp pour ta réponse mais je tiens vraiment à ne pas travailler avec PHP 5 puisque dans le serveur c'est easyphp 1.8 qu'est installé alors je ne vx pa prendre le risque de le supprimer pour passer easyphp 2.0 puisque toute mes application sont faites avec php 4.

  4. #4
    Membre expérimenté

    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
    Par défaut
    Citation Envoyé par namstou3
    mais je tiens vraiment à ne pas travailler avec PHP 5 puisque dans le serveur c'est easyphp 1.8 qu'est installé alors je ne vx pa prendre le risque de le supprimer pour passer easyphp 2.0 puisque toute mes application sont faites avec php 4.
    Grave erreur : PHP 4 tire progressivement sa révérence et ne sera à terme plus maintenu ! Le passage à PHP 5, n'offre que des avantages (mis à part la migration bien sûr à l'égard de certains aspects) et si vous faites parti des derniers à utiliser PHP 4 pendant que la majorité utilise PHP 5 (c'est déjà le cas), vous allez rencontrez bien des difficultés à obtenir de l'aide (de nouvelles fonctions sont apparues, leurs paramètres et le fonctionnement interne de PHP évoluent, dont notamment, et de manière conséquente, au niveau objet). Je pense que vous devriez tout de même sérieusement étudier la question

    Pourquoi y a-t-il une balise PHP avant votre document XML ? Et votre document XML n'est pas tout à fait correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="ISO-8859-1"?>
    Sinon votre "script" fonctionne. Vous devriez retirer les arobases pour en savoir davantage (erreur sur le chemin, allow_url_fopen à Off - d'ailleurs il n'est probablement pas nécessaire de passer par une URL HTTP ici, autres).

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 233
    Par défaut
    Merci beaucoup julp pour le conseil, t'a tout à fais raison.. Sinon mon problème est résolu. Il me faut juste un petit truc.

    Mon code est le suivant (un nouveau 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <?php
        $fichier = "apcvm_all.xml";
     
        // Ma propre fonction de traitement du texte
        // qui est appelée par le "parseur"
        function fonctionTexte($parseur, $texte)
        {
            // Dans l'immédiat nous nous contentons d'afficher
            // le texte brut accompagné d'un simple retour à la ligne
            echo $texte."<br/>";
        }
     
        // Création du parseur XML
        $parseurXML = xml_parser_create();
     
        // Je précise le nom de la fonction a appeler
        // lorsque du texte est rencontré
        xml_set_character_data_handler($parseurXML, "fonctionTexte");
     
        // Ouverture du fichier
        $fp = fopen($fichier, "r");
        if (!$fp) die("Impossible d'ouvrir le fichier XML");
     
        // Lecture ligne par ligne
        while ( $ligneXML = fgets($fp, 1024)) {
            // Analyse de la ligne
            // REM: feof($fp) retourne TRUE s'il s'agit de la dernière
            //      ligne du fichier.
            xml_parse($parseurXML, $ligneXML, feof($fp)) or
                die("Erreur XML");
        }
     
        xml_parser_free($parseurXML);
        fclose($fp);
    ?>
    ça m'affiche exactement le contenu de mon fichier XML, mais ce que je veux c'est ne pas tous affiché, je veux par exemple mettre un liste déroulante ça dépend du choix que je fais ça m'affiche seulement le contenu de la sélection. Avez-vous une idée??

    Merci

  6. #6
    Membre expérimenté

    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
    Par défaut
    Citation Envoyé par namstou3
    je veux par exemple mettre un liste déroulante ça dépend du choix que je fais ça m'affiche seulement le contenu de la sélection. Avez-vous une idée??
    Sélection de quoi ? Contenu de quoi ?

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

Discussions similaires

  1. Soucis avec un script d'image
    Par Baldy dans le forum Free
    Réponses: 2
    Dernier message: 10/08/2009, 09h31
  2. souci avec un script sur packages
    Par sophiedu13 dans le forum Administration système
    Réponses: 4
    Dernier message: 25/10/2007, 15h38
  3. soucis avec mon script de news
    Par Ludo75 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/01/2007, 14h41
  4. Petit souci avec un script
    Par Equinoxe5 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/09/2006, 15h43
  5. [Upload] Souci avec un script d'upload
    Par Ludo75 dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2006, 14h16

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