Page 1 sur 1

Générer un doculent Word à partir de PHP

Posté : 09 juin 2011, 00:25
par ghir_ana
Bonjour,

Je cherche a créer un document word à partir d'un modèle via PHP.

J'ai réussi à généré le document word,mais le problème il m'affiche un seul enregistrement.

Voici le code :



<?php

//Je suppose que vous avez déjà les variables php renseignées. Que ce soit un renseignement statique ou de données provenant de la base de données. Nommez vos variables selon les noms contenus dans le fichier template.htm

// Je capture et mémorise le contenu du fichier template.htm

$content=file_get_contents('template.htm'); // Attention au chemin d'accès au fichier template. ici, il est dans le même répertoire que export.php sinon donnez le chemin correct.

//Maintenant, je remplace une à une les variables. Méthode fastidieuse mais "Cameroun est chaud, on va faire comment". Optimisera au fil de l'expérience


include("connexion.php");

$sql="select designation,nom_entreprise,tel_fixe,adresse,ref_devis,qte,prix_unitaire,(qte*prix_unitaire)as aa,devis.ht as ht,devis.ttc as ttc,devis.tva as tva,autre
from produit,devis,devisfactureproduit,entreprise
where produit.id_produit=devisfactureproduit.id_produit
and devis.id_devis=devisfactureproduit.id_devis
and entreprise.id_entreprise=devis.id_entreprise
and devis.id_devis=40";

$requete=mysql_query($sql,$cnx);

$today=date("Y-m-d");

while($result=mysql_fetch_array($requete))
{
$nom_entreprise=htmlspecialchars(trim($result["nom_entreprise"]));
$ref_devis=htmlspecialchars(trim($result["ref_devis"]));
$adresse=htmlspecialchars(trim($result["adresse"]));
$tel_fixe=htmlspecialchars(trim($result["tel_fixe"]));
$ht=htmlspecialchars(trim($result["ht"]));
$ttc=htmlspecialchars(trim($result["ttc"]));
$tva=htmlspecialchars(trim($result["tva"]));


$designation=htmlspecialchars(trim($result["designation"]));
$qte=htmlspecialchars(trim($result["qte"]));
$prix_unitaire=htmlspecialchars(trim($result["prix_unitaire"]));
$aa=htmlspecialchars(trim($result["aa"]));
$autre=htmlspecialchars(trim($result["autre"]));


//$content="ttt";

$content=str_replace('$today',$today,$content);
$content=str_replace('$designation',$designation,$content);
$content=str_replace('$tel_fixe',$tel_fixe,$content);
$content=str_replace('$nom_entreprise',$nom_entreprise,$content);
$content=str_replace('$ref_devis',$ref_devis,$content);
$content=str_replace('$qte',$qte,$content);
$content=str_replace('$prix_unitaire',$prix_unitaire,$content);
$content=str_replace('$aa',$aa,$content);

$content=str_replace('$ht',$ht,$content);
$content=str_replace('$ttc',$ttc,$content);
$content=str_replace('$tva',$tva,$content);
$content=str_replace('$autre',$autre,$content);
$content=str_replace('$adresse',$adresse,$content);


// La suite du fichier à l'étape 3
//Etape 3 : La génération et l'ouverture du fichier word

//Cette étape consiste à créer le fichier physique sur le disque dûr et y acceder.

// Code à insérer dans l'étape 2 EN FIN DE CODE

}
?>

<?php
$filename="facture.doc";
touch($filename);
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a')) {
echo "Impossible d'ouvrir le fichier ($filename)";
exit;
}
if (fwrite($handle, $content) === FALSE) {
echo "Impossible d'écrire dans le fichier ($filename)";
exit;
}
echo "<a href='$filename'>Télécharger le fichier</a>";
fclose($handle);
} else {
echo "Le fichier $filename n'est pas accessible en écriture.";
}

?>

Re: Générer un doculent Word à partir de PHP

Posté : 09 juin 2011, 08:59
par Mazarini
Bonjour,

Je ne sais pas comment afficher plusieurs enregistrements, mais je sais pourquoi il n'y en a qu'un seul.

Lorsque que tu fais le premier remplacement comme par exemple :
$content=str_replace('$today',$today,$content);
la chaine de caractères '$today' disparait et donc lors des remplacements suivants, rien ne se passe.