Nous avons sur l'intranet de mon entreprise un script qui permet la création de fichiers word et excel à partir de la base de données et de fichiers liés.
Cependant, la personne qui a créé ce script n'a pas pris en compte une possible modification manuelle des fichiers word notemment. Ce qui fait que lorsqu'on clique sur "Créer/mettre à jour les fichiers..." il écrase les modifications apportées.
Voici une partie du code:
$listeFichiersCCTP = array (
"debutfichier.xml", //0
"0-geneTousLots.xml" ,
"11-particPlomberie1.xml",
.........fichiers xml.....
"finfichier.xml"
);
foreach($listeLots as $lot)
{
$listeFichiersACompiler =array($listeFichiersCCTP[0] ); //ajout du debut de fichier
$CCTPconfig = explode('-', $lot['cctpConfig']);
if($CCTPconfig[1] == 1) { array_push($listeFichiersACompiler,$listeFichiersCCTP[1]); } //geralite tous lot
.................autres conditions...........
if($CCTPconfig[14] == 1) { array_push($listeFichiersACompiler,$listeFichiersCCTP[17]); } // Courant Faible
array_push($listeFichiersACompiler,$listeFichiersCCTP[18]);
if ($CCTPconfig[0] == 1)
{
array_push($listeFichiersACompiler,$listeFichiersCCTP[19]); // debut annexe
if($CCTPconfig[2] == 1) { array_push($listeFichiersACompiler,$listeFichiersCCTP[20]); }
.................etc etc......
if($CCTPconfig[13] == 1) { array_push($listeFichiersACompiler,$listeFichiersCCTP[28]); }
}
array_push($listeFichiersACompiler,$listeFichiersCCTP[29]); //ajout de la fin de fichier[/code]
Et ça finit par:
[code]foreach($listeFichiersACompiler as $nomFichier)
{
$fichier = $repModelesCCTP ."\\".$nomFichier;
$fp = fopen($fichier,'r'); //lecture du fichier
$partieCCTP = fread($fp, filesize($fichier));
foreach($varCCTP as $var => $traduc)
{
$partieCCTP = str_ireplace($var , $traduc, $partieCCTP); // 2009-12-10 passé en case-insensitive
}
$cctp .= $partieCCTP;
fclose($fp);
}
$fp = fopen(utf8_decode(str_replace("\'","'",$repAffaire).'\\50-DCE\\Pièces écrites\\CCTP-'.$lot['numLot'].'-'.trim($lot['libelleLot']).'.doc'),"w"); //ecriture du fichier
if ( isset( $fp )) {
fputs($fp,$cctp);
fclose($fp);
$sql = "UPDATE listelots SET fait=2 WHERE idAffaire = ".$idAffaire." AND idLot=".$lot['idLot'].";";
if ( !(mysql_query($sql)) ) {
echo "ERROR ".$sql." \n";
}
} else {
echo "<br>";
echo '<br><b style="color:red;">';
echo "pb création " . $lot['libelleLot'];
echo "</b><br>";
echo "<br>";
echo "<br>";
}
J'aimerais donc savoir comment procéder pour empecher l'écrasement des données modifiées manuellement. Que lors de la mise à jour via l'intranet, il vérifie si les données ont été modifiées depuis l'interface, si c'est le cas, qu'il modifie uniquement ce qui a été touché sans écraser les modifications.Merci de votre aide.