Page 1 sur 1

Mise à jour de documents word créés depuis des fichiers xml

Posté : 07 janv. 2010, 14:57
par Skyounet
Bonjour,
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.

Re: Mise à jour de documents word créés depuis des fichiers xml

Posté : 07 janv. 2010, 16:21
par Skyounet
J'ai pensé à une édition des xml avec dom, en les enregistrant ailleurs, avant de finaliser la création du .doc. Cependant ces fichiers étant assez conséquant, sans une interface claire c'est pas la peine d'y penser.
Il faudrait que la personne qui doit modifier le fichier puisse le faire sans se casser la tête.