Tsgeri 2 - 2010
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Tsgeri 2 - 2010

Forum des tsgeri, session novembre 2009 - septembre 2010
 
AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -20%
Pack Gigabyte Ecran PC Gamer 27″ LED M27Q ...
Voir le deal
749 €

 

 un petit script php !

Aller en bas 
AuteurMessage
m0m0

m0m0


Messages : 22
Date d'inscription : 02/08/2010

un petit script php ! Empty
MessageSujet: un petit script php !   un petit script php ! EmptyVen 13 Aoû - 12:02

Ce script que j'ai magnifiquement réalisé permet de lire un Fichier EDI mais vous pourrez le réutilliser pour autre chose.

On fait g un dossier d'arrivée de fichier, je dois extraire des données explode().

UNB, UNH sont des segments ou des lignes présents dans d fichiers EDI.

Je dois compter le nombre de fois que C données apparaissent.

Ensuite je les ecris dans un fichiers au format txt.

<?php
error_reporting(E_ERROR);
define('DIR_IN','./in/'); // Dossier de fichier EDI en entrée
define('DIR_OUT','./out/'); // Dossier de fichier en sortie

class main {
private $filenameArray;
private $stats;

public function __construct()
{
(!defined('DIR_IN'))?exit:true;
(!defined('DIR_OUT'))?exit:true;
$this->listFiles(true);
$this->makeStats();
}

public function __destruct()
{
ob_start();
ksort($this->stats['files']);
foreach($this->stats['files'] as $field => $data)
{
echo "---- DATE : ".substr($field,0,4)."-".substr($field,4,6)." ----------------------------------\n";
foreach ($data as $ff=>$dd)
{
echo "---- TYPE DE MESSAGE : $ff\n";
foreach ($dd as $fff=> $ddd)
{

if (is_array($ddd))
{
echo "---- $fff :\n";
$format = " %35s -- NB : %d\n";
foreach ($ddd as $ffff=>$dddd)
echo sprintf($format,$ffff,$dddd);
unset($ffff,$dddd);

}
else
echo "---- $fff : $ddd\n";
}
unset($fff,$ddd);
echo "\n";
}
unset($ff,$dd);
echo "------------------------------------------------------\n\n";
}
unset($data,$field);
$output = ob_get_contents();
ob_end_clean();
file_put_contents(DIR_OUT.'files-'.microtime().".txt",$output);
ob_start();
ksort($this->stats['stats']);
foreach($this->stats['stats'] as $field => $data)
{
ksort($data);
echo "---- LISTE DES MESSAGES PAR ANNEE --------------------\n";
echo "---- DATE : $field -------------------------------------\n";
foreach($data as $ff=>$dd)
{
if ($ff == 'ZZZ_TOTAL_MSG')
{
$format = "--------- %-35s -- %d\n";
echo sprintf($format,$ff,$dd);
}
else if ($ff == 'ZZZ_TOTAL_KB')
{
$format = "--------- %-35s -- %s KB \n";
echo sprintf($format,$ff,round($dd / 1024,2));
}
else
{
$format = "---- %-35s -- NB : %d\n";
echo sprintf($format,$ff,$dd);
}
}
unset($ff,$dd);
echo "------------------------------------------------------\n\n";
}
unset($data,$field);
$output = ob_get_contents();
ob_end_clean();
file_put_contents(DIR_OUT.'stats-'.microtime().".txt",$output);
ob_start();
ksort($this->stats['partners']);
foreach($this->stats['partners'] as $field => $data)
{
echo "---- LISTE DES PARTENAIRES ACTIFS PAR ANNEE ----------\n";
echo "---- DATE : $field -------------------------------------\n";
foreach($data as $ff=>$dd)
{
echo "---- $ff :\n";
foreach($dd as $fff=> $ddd)
{
$format = " %35s -- NB : %s\n";
echo sprintf($format,$fff,$ddd);
}
}
unset($ff,$dd);
echo "------------------------------------------------------\n\n";
}

unset($data,$field);
$output = ob_get_contents();
ob_end_clean();
file_put_contents(DIR_OUT.'partners-'.microtime().".txt",$output);

}

private function makeStats()
{
$stats = array();
$files = array();
$partners = array();
foreach($this->filenameArray as $filename)
{
$fileCount++;
$fileContent = file_get_contents($filename);
$fileContentArray = explode(''',$fileContent);
unset($fileContent);
$unb = $unh = $nad = false;
if (count($fileContentArray) > 2)
{

foreach($fileContentArray as &$line)
{
$line = trim($line);

if(strlen($line) < 4)
break 1;

$segid = $line{0}.$line{1}.$line{2};
switch($segid)
{
case "UNB" : $unb = $line; break;
case "UNH" : $unh = $line; break;
case "MID" : $unh = $line; break;
case "NAD" : (!strstr($line,'HEULIEZ'))?$nad = $line:$nad = false; break;
}
if($unb && $unh && $nad)
break;
}
if($unb && $unh)
{
$fileCountEDI++;
$unb = explode('+',$unb);
$unh = explode('+',$unh);
$nad = explode('+',$nad);
$files['20'.substr($unb[4],0,4)][$unh[2]]['TOTAL']++;
$files['20'.substr($unb[4],0,4)][$unh[2]]['Emetteur'][$unb[2]]++;
$files['20'.substr($unb[4],0,4)][$unh[2]]['Recepteur'][$unb[3]]++;
if($nad)
{
if ($unb[2] == '1321139677HEU1')
{
if (!isset($partners['9999']['Nom'][$unb[3]]))
$partners['9999']['Nom'][$unb[3]] = $nad[4];
}
else if ($unb[3] == '1321139677HEU1')
{
if (!isset($partners['9999']['Nom'][$unb[2]]))
$partners['9999']['Nom'][$unb[2]] = $nad[4];
}
unset($nad);
}
$partners['20'.substr($unb[4],0,2)]['Emetteur'][$unb[2]]++;
$partners['20'.substr($unb[4],0,2)]['Recepteur'][$unb[3]]++;
$stats['20'.substr($unb[4],0,2)][$unh[2]]++;
$stats['20'.substr($unb[4],0,2)]['ZZZ_TOTAL_MSG']++;
$stats['20'.substr($unb[4],0,2)]['ZZZ_TOTAL_KB']+=filesize($filename);
unset($unb,$unh);
}
}
}
$this->stats = array('files'=>$files,'stats'=>$stats,'partners'=>$partners);
echo "Fichiers traités : $fileCount\n";
echo "Fichiers EDI traités : $fileCountEDI\n";
}

private function listFiles($follow = false,$dir = '',$files = array())
{

if ($dir == '')
$dir = DIR_IN;

$dir = realpath($dir);

if (@$handler = opendir($dir))
{
while($filename = readdir($handler))
{
if ($filename != '.' && $filename != '..')
{
if(is_dir($dir.'/'.$filename) && $follow)
$this->listFiles($follow,$dir.'/'.$filename,&$files);
else
$files[] = $dir.'/'.$filename;
}
}
closedir($handler);
$this->filenameArray = $files;
}
else
$this->filenameArray = array();
}

}

new main;
?>
Voilà et mon patron me suce la zigounette pour que je lui en reface un mais avec d pdf en entrée !
Mais ma mission chez eux se terminent ! ouf !
Revenir en haut Aller en bas
 
un petit script php !
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Tsgeri 2 - 2010  :: Problème informatique :: Tutos-
Sauter vers: