Bonjour,

Je suis actuellement en train de réaliser une application en php permettant la gestion de devis. Une des fonctionnalités permet de générer ces fiches au format word pour être imprimé ensuite.

Il s'agit ici de remplacer les variables d'un fichier word prit comme template. Le remplacement est bien effectué environ dans 70% des cas, et les 30% restant la date prise est totalement fausse et le reste des champs est vide. Je me suis déjà pas mal penché sur le soucis et je ne vois pas d'ou cela peut venir.

Voici le code qui s'occupe de cette fonctionnalité :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
 
if (is_dir("//.../fichword/"))
{
	$t->set_var("word", "");
	if (!is_dir("//...Devis/$dossier"))
		mkdir("//.../fichword/Devis/$dossier");
	if (!is_file("//...fichword/Devis/$dossier/dev$numéro.doc"))
	{
		$template=fopen("includes/template.xml", "r");
		$page="";
		while (!feof($template))
			$page.=fgets($template, 4096);
		fclose($template);
		$devis=exec_sql_line($id_odbc, "SELECT * FROM (T_DEVIS INNER JOIN T_EMETTEUR ON T_DEVIS.NuméroEmetteur=T_EMETTEUR.NuméroEmetteur) INNER JOIN T_CLIENT ON T_DEVIS.NuméroClient=T_CLIENT.NuméroClient WHERE NuméroDevis LIKE '$numéro'");
		$devis["DésignationDemande"]=str_replace("'", "'", $devis["DésignationDemande"]);
		$devis["DésignationDemande"]=html_entity_decode($devis["DésignationDemande"]);
		$devis["DésignationDemande"]=translate($devis["DésignationDemande"]);
		$page=str_replace("{Date}", strftime("%d/%m/%Y", strtotime($devis["DateDevis"])), $page);
		$page=str_replace("{Designation}", str_replace("'", "'", $devis["DésignationDemande"]), $page);
		$devis["Lieu"]=translate(str_replace("'", "'", $devis["Lieu"]));
		$page=str_replace("{Lieu}", $devis["Lieu"], $page);
		$page=str_replace("{Semaine}", translate($devis["Delai"]), $page);
		$page=str_replace("{Devis}", $devis["NuméroDevis"], $page);
		$page=str_replace("{TelClient}", $devis["TéléphoneClient"], $page);
		$page=str_replace("{CoutFourniture}", number_format($devis["CoûtFourniture"], 2, ',', ' '), $page);
		$Montant=number_format(round($devis["CoûtFourniture"]+$devis["CoûtPrestation"]+$devis["CoûtMainOeuvre"]+$devis["CoûtUsinage"],2), 2, ',', ' ');
		$page=str_replace("{Montant}", $Montant, $page);
		$page=str_replace("{Emetteur}", $devis["NomEmetteur"]." ".$devis["PrénomEmetteur"], $page);
		$devis["NomClient"]=translate($devis["NomClient"]);
		$devis["PrénomClient"]=translate($devis["PrénomClient"]);
		$page=str_replace("{Client}", $devis["NomClient"]." ".$devis["PrénomClient"], $page);
		$nouveau=fopen("//.../fichword/Devis/$dossier/dev$numéro.doc", "w");
		fwrite($nouveau, $page);
		fclose($nouveau);
	}
}