par
Invité » 26 oct. 2006, 11:12
Désolé, voici tous le code :
<?php
$fichiers_sortie = array();
$fp = fopen('batcheclatement/CQFIC270.TXT', 'r');
$bPremiereFois = true;
$todayj = date("j");
if ($todayj < 10) {
$sTodayj = "0".$todayj;
}
else {
$sTodayj = "".$todayj;
}
$todaym = date("m");
if ($todaym < 10) {
$sTodaym = "0".$todaym;
}
else {
$sTodaym = "".$todaym;
}
$todayY = date("Y");
$codeIsinPrec="";
$fragments = "";
$fragmentsPrec = "";
while (!feof($fp)) {
$ligne = fgets($fp);
$fragments = explode(';', $ligne);
if ($codeIsinPrec!="" && $codeIsinPrec!=$fragments[2])
{
$nomFichier ="cours/cours".$todayY.$sTodaym.$sTodayj ;
if (!isset($fichiers_sortie[$nomFichier])) {
$fichiers_sortie[$nomFichier] = new DOMDocument('1.0', 'ISO-8859-1');
if (file_exists($nomFichier . ".xml"))
{
$fichiers_sortie[$nomFichier]->load($nomFichier . ".xml") ;
}
}
$dom = $fichiers_sortie[$nomFichier];
try {
$xpath = new DOMXPath($dom);
if ($bPremiereFois) {
if (!file_exists($nomFichier . ".xml"))
{
$id = $dom->createElement("mvts");
$dom->appendChild($id);
}
else
{
$id = $xpath->evaluate("mvts")->item(0);
}
$bPremiereFois = false;
}
$node = $xpath->evaluate("mvt[@code_isin='{$fragmentsPrec[2]}']")->item(0);
if ($node==null)
{
$mvt = $dom->createElement('mvt');
$mvt->setAttribute('code_cns', $fragmentsPrec[0].$fragmentsPrec[1]);
$mvt->setAttribute('code_isin', $fragmentsPrec[2]);
$mvt->setAttribute('dateValeur', $fragmentsPrec[4]);
$mvt->setAttribute('cours', $fragmentsPrec[5]);
$mvt->setAttribute('volatilite', $fragmentsPrec[6]);
$id->appendChild($mvt);
}
} catch (Exception $e) {
die('Ligne ' . $e->getLine() . ' : ' . $e->getMessage());
}
}
$codeIsinPrec = $fragments[2];
$fragmentsPrec = $fragments;
}
fclose($fp);
$dom = $fichiers_sortie[$nomFichier];
try {
$xpath = new DOMXPath($dom);
if ($bPremiereFois) {
if (!file_exists($nomFichier . ".xml"))
{
$id = $dom->createElement("mvts");
$dom->appendChild($id);
}
else
{
$id = $xpath->evaluate("mvts")->item(0);
}
$bPremiereFois = false;
}
$node = $xpath->evaluate("mvt[@code_isin='{$fragmentsPrec[2]}']")->item(0);
if ($node==null)
{
//if ($fragmentsPrec[6]=""){$fragmentsPrec[6]="0"};
$mvt = $dom->createElement('mvt');
$mvt->setAttribute('code_cns', $fragmentsPrec[0].$fragmentsPrec[1]);
$mvt->setAttribute('code_isin', $fragmentsPrec[2]);
$mvt->setAttribute('dateValeur', $fragmentsPrec[4]);
$mvt->setAttribute('cours', $fragmentsPrec[5]);
$mvt->setAttribute('volatilite', $fragmentsPrec[6]);
$id->appendChild($mvt);
}
} catch (Exception $e) {
die('Ligne ' . $e->getLine() . ' : ' . $e->getMessage());
}
foreach ($fichiers_sortie as $k => $v) {
$v->save("$k.xml");
unset($fichiers_sortie[$k]);
}
pour le fichier de départ et d'arrivée tu l'as.
Concernant ta remarque pour tester j'avais effectivement essayé de faire
if ($fragmentsPrec[6]=""){$fragmentsPrec[6]="0"};
mais cela ne change rien : au contraire : cela me met erreur
Merci
Désolé, voici tous le code :
[php]
<?php
$fichiers_sortie = array();
$fp = fopen('batcheclatement/CQFIC270.TXT', 'r');
$bPremiereFois = true;
$todayj = date("j");
if ($todayj < 10) {
$sTodayj = "0".$todayj;
}
else {
$sTodayj = "".$todayj;
}
$todaym = date("m");
if ($todaym < 10) {
$sTodaym = "0".$todaym;
}
else {
$sTodaym = "".$todaym;
}
$todayY = date("Y");
$codeIsinPrec="";
$fragments = "";
$fragmentsPrec = "";
while (!feof($fp)) {
$ligne = fgets($fp);
$fragments = explode(';', $ligne);
if ($codeIsinPrec!="" && $codeIsinPrec!=$fragments[2])
{
$nomFichier ="cours/cours".$todayY.$sTodaym.$sTodayj ;
if (!isset($fichiers_sortie[$nomFichier])) {
$fichiers_sortie[$nomFichier] = new DOMDocument('1.0', 'ISO-8859-1');
if (file_exists($nomFichier . ".xml"))
{
$fichiers_sortie[$nomFichier]->load($nomFichier . ".xml") ;
}
}
$dom = $fichiers_sortie[$nomFichier];
try {
$xpath = new DOMXPath($dom);
if ($bPremiereFois) {
if (!file_exists($nomFichier . ".xml"))
{
$id = $dom->createElement("mvts");
$dom->appendChild($id);
}
else
{
$id = $xpath->evaluate("mvts")->item(0);
}
$bPremiereFois = false;
}
$node = $xpath->evaluate("mvt[@code_isin='{$fragmentsPrec[2]}']")->item(0);
if ($node==null)
{
$mvt = $dom->createElement('mvt');
$mvt->setAttribute('code_cns', $fragmentsPrec[0].$fragmentsPrec[1]);
$mvt->setAttribute('code_isin', $fragmentsPrec[2]);
$mvt->setAttribute('dateValeur', $fragmentsPrec[4]);
$mvt->setAttribute('cours', $fragmentsPrec[5]);
$mvt->setAttribute('volatilite', $fragmentsPrec[6]);
$id->appendChild($mvt);
}
} catch (Exception $e) {
die('Ligne ' . $e->getLine() . ' : ' . $e->getMessage());
}
}
$codeIsinPrec = $fragments[2];
$fragmentsPrec = $fragments;
}
fclose($fp);
$dom = $fichiers_sortie[$nomFichier];
try {
$xpath = new DOMXPath($dom);
if ($bPremiereFois) {
if (!file_exists($nomFichier . ".xml"))
{
$id = $dom->createElement("mvts");
$dom->appendChild($id);
}
else
{
$id = $xpath->evaluate("mvts")->item(0);
}
$bPremiereFois = false;
}
$node = $xpath->evaluate("mvt[@code_isin='{$fragmentsPrec[2]}']")->item(0);
if ($node==null)
{
//if ($fragmentsPrec[6]=""){$fragmentsPrec[6]="0"};
$mvt = $dom->createElement('mvt');
$mvt->setAttribute('code_cns', $fragmentsPrec[0].$fragmentsPrec[1]);
$mvt->setAttribute('code_isin', $fragmentsPrec[2]);
$mvt->setAttribute('dateValeur', $fragmentsPrec[4]);
$mvt->setAttribute('cours', $fragmentsPrec[5]);
$mvt->setAttribute('volatilite', $fragmentsPrec[6]);
$id->appendChild($mvt);
}
} catch (Exception $e) {
die('Ligne ' . $e->getLine() . ' : ' . $e->getMessage());
}
foreach ($fichiers_sortie as $k => $v) {
$v->save("$k.xml");
unset($fichiers_sortie[$k]);
}
[/php]
pour le fichier de départ et d'arrivée tu l'as.
Concernant ta remarque pour tester j'avais effectivement essayé de faire
[php]
if ($fragmentsPrec[6]=""){$fragmentsPrec[6]="0"};[/php]
mais cela ne change rien : au contraire : cela me met erreur
Merci