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

Langage PHP Discussion :

pb de génération de fichier xml


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut pb de génération de fichier xml
    bonjour,

    voilà un code simple permettant de créer un fichier xml simple (qui fonctionne bien )

    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
     
    <?php
      /**
      * Topic:       Create XML files using PHP DOM-XML
      *
      */
     
      // create the xml processing instruction
      $doc = new_xmldoc("1.0" );
      $filename="stock";
      $filedate = strftime("%y%m%d") ;
     
      // create a root node and set an attribute
       $root = $doc->add_root("racine" );
       $date = strftime("%d/%m/%C%y") ;
       $dateNode = $root-> new_child("date", "$date");
     
       $officename="office13";
       $code_office = "A013";
     
      // create a child node
      $officeNode = $root->new_child("office", "");
      // set an attribute to the child node
      $officeNode->set_attribute("name", "$officename");
      // create a child node and add content
      $officeNode->set_attribute("code_office", "$code_office");
     
      $qte="55421";
      $code_article="cf10";
      $stockNode1 = $officeNode->new_child("stock", "$qte" );
      $stockNode1->set_attribute("code_article","$code_article");
     
     
     $stockNode2 = $officeNode->new_child("stock", "$qte" );
      $stockNode2->set_attribute("code_article","$code_article");
     
     
      // write to file
      $fp = fopen($filename.$filedate.".xml", "w+" );
      fwrite($fp, $doc->dumpmem(), strlen($doc->dumpmem() ));
      fclose($fp);
     
     
    ?>
    j'ai réussi à crée ce simple fichier , maintenant j'ai essyé d'extraire mes données depuis une BDD postgres , je n'arrive pas à ajouter un attribut au dernier fils ,
    je reçois l'erreur suivante :

    Fatal error: Call to a member function on a non-object in /var/www/html/xml/fileXml.php
    voilà tout le code que j'utilise :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    
    <?
      /* Topic:       Create XML files using PHP DOM-XML
      */
    
      // create the xml processing instruction
      $doc = new_xmldoc("1.0" );
      $filename="stock";
      $filedate = strftime("%y%m%d") ;
      global $i ;
     
       $root = $doc->add_root("racine" );                                   
       date = strftime("%d/%m/%C%y") ;
    
       $dbName = "mabase";
       $dbUser = "nobody";
       $dbPass = "nobody";
       $host = "127.0.0.1";
       $port = "5432";
    
       $cnxString = "host=".$host." port=".$port." dbname=".$dbName." user=".$dbUser." password=".$dbPass;
       $pgsql_conn = pg_connect($cnxString);
    
    if ($pgsql_conn)
      {
        echo "Connexion reussie  : \n";
        $query = "SELECT office_id , office_name FROM office where office_id like 'A%'";
        $result = pg_exec($query) or die('echec requete : ' . pg_last_error());
    
       $cpt = 0;
         $i = 1 ;
     while ($i>0 && $line = pg_fetch_array($result))
        {
    
           $line = pg_fetch_array($result);
    
               foreach ($line as $col_value)
                   {
                        $officename=$line[1];
                        $code_office = $line[0];
                  }
                        // create a child node
                        $officeNode.$i= $root->new_child("office", "");
                        // set an attribute to the child node
                        $officeNode.$i->set_attribute("name", "$officename");
                        // create a child node and add content
                        $officeNode.$i->set_attribute("code_office", "$code_office");
    
                        $resultstock = get_result_stock($code_office);
                            $j = 0;
    
                           while ($linestock = pg_fetch_array($resultstock))
                            {
    
                             echo " i  = ".$i."et cpt ".$cpt." et j = ".$j;
                              $code_article = $linestock[0];
                              $start = $linestock[1];
                              $end = $linestock[2];
    
                               $qte=$bstart;
                               echo "stockNode".$i.$j ;
                              // $stockNode.$i.$j->set_attribute("code_article",$code_article);
                               $stockobj = $stockNode.$i.$j ;
                             $stockNode.$i.$j = $officeNode.$i->new_child("stock", "$qte" );
    
                               $stockNode.$i.$j ->set_attribute("code_article","11111");
    
                               $j++;
                            }//end while
         $i++;
             }
    
         // write to file
        $fp = fopen($filename.$filedate.".xml", "w+" );
        fwrite($fp, $doc->dumpmem(), strlen($doc->dumpmem() ));
        fclose($fp);
    
        // Ferme la connexion
        pg_close($pgsql_conn);
        }
        else
        {
         echo pg_last_notice($pgsql_conn);
         exit;
        }
    
    echo "\n fin du programme";
    
    function get_result_stock ($code_office)
    {
    
        $stockquery = "SELECT category_id , start , end from stock  where op_type='1' and office_id='$code_office'";
        $resultstock = pg_exec($stockquery) or die();
    
        return $resultstock ;
    
    }
    
    ?>
    la ligne en rouge est source de l'erreur !
    si je la commente tout se passe bien , mais je dois ajouter cet attribut

    vraiment je plante
    ;-) cordialement

  2. #2
    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
    Bonjour
    J'ai l'impression que tu utilises des fonctions qui sont "deprecated" depuis PHP 4.3.0, tu as une version de PHP antérieure ?

  3. #3
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut
    ah oui !
    c aussi à signaler
    je traille sur une machine dont je n'ai pas le droit de mettre à jour la version de php


    j'utilise la version :php4.1.2-7
    ;-) cordialement

  4. #4
    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 peppena
    j'utilise la version :php4.1.2-7
    obsolète depuis avril 2002.
    J'ai peur que tu ne trouves pas beaucoup d'aide, surtout que le support XML n'était pas réputé pour sa grande qualité à cette époque.

    Tu pourrais tenter d'expliquer à tes responsables que conserver des failles vieilles de plus de 4 ans, c'est pas une bonne idée ?

  5. #5
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut
    oui je comprends bien !
    mais il ya sur le meme serveur deux grandes applications qui tournent qui necessiteront beaucoups de tps pour les mettres aussi à jours !! (srtt que les developpeurs mm des applications ne sont plus là) !!!
    ;-) cordialement

  6. #6
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut
    bonjour ,

    personne ne peux m'aider?
    prkoi l'attribut geneère cette erreur ?!!!
    ;-) cordialement

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  2. Réponses: 5
    Dernier message: 30/01/2008, 14h47
  3. génération de fichier XML
    Par cmoibal dans le forum C
    Réponses: 0
    Dernier message: 16/11/2007, 11h12
  4. [1.1] Ajout de DTD dans la génération de fichier XML
    Par shadowninja dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/01/2007, 10h33
  5. [DOM] Génération dynamique fichier xml
    Par Fabouney dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/10/2005, 09h45

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