Rechercher : dans
Par :

[php] pb génération fichier xml avec php

Dernière réponse le 5 oct 2007 à 07:08:20 peppena, le 3 jui 2006 à 10:17:25 
 Signaler ce message aux modérateurs

Bonjour,

voilà un code simple permettant de créer un fichier xml simple (qui fonctionne bien )
j'utilise la version :php4.1.2-7 ( je suis obligée)


<?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 :

Citation:
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 :

<? /* 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

Meilleures réponses pour « [php] pb génération fichier xml avec php » dans :
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
PHP - Génération d'images VoirPrérequis PHP permet de créer des images au format GIF à l'aide d'une librairie de fonctions prévue à cet effet. La librairie permettant de créer et manipuler des fichiers graphiques se nomme GD, ainsi, pour pouvoir utiliser ces fonctions il faut...

1

Hello_World, le 3 jui 2006 à 10:55:30

Bonjour,

Avec un code comme ça, il est parfaitement normal qu'il y ait des problemes. C'est ILLISIBLE ! :)

Une instruction égal une ligne. Réecris ton code de manière lisible et l'erreur apparaitra très certainement d'elle meme.

Répondre à Hello_World

2

 peppena, le 3 jui 2006 à 13:01:23
  • +3

Effectivement c pas lisible :)

voilà le premier code :

<?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 = "val13"; 
// 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="c10"; 
$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); 
?>




et le deuxième code est :
<? 
/* 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") ; 
$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()); 
 $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))
 { 
$code_article = $linestock[0]; 
$start = $linestock[1]; 
$end = $linestock[2]; 
$qte=$bstart; 
$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 ; 
} ?>


Répondre à peppena
Collection CommentÇaMarche.net