Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2011, 18h05   #1
 
Inscription : septembre 2008
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 114
Points : -49
Points : -49
Par défaut Générer un document Word à partir de PHP

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 :
Code :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?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
 
}
?>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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.";
 }
 
?>
ghir_ana est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 20h28   #2
Membre éclairé
 
Homme
Webmaster
Inscription : septembre 2007
Messages : 376
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2007
Messages : 376
Points : 377
Points : 377
Salut,

à chaque fois que tu passes dans ta boucle while, tu réaffectes une valeur à ta variable $content.... Du coup tu écrases les lignes les unes après les autres ...

Ce que je ferai :

Code :
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
 
$content_doc = '';
$row_default = '....'; // ici le template par défaut d'un enregistrement
 
while($result=mysql_fetch_array($requete))
{
 
//....
 
$content = $row_default ;
$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);
 
$content_doc .= $content;
}
 
//pour l'écriture du doc
//fwrite($handle, $content_doc);
}
Finality est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 22h44   #3
 
Inscription : septembre 2008
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 114
Points : -49
Points : -49
Le problème n'est pas réglé toujours un seul enregistrement sauf qu'il m'affiche le dernier enregistrement
ghir_ana est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 10h48   #4
En attente de confirmation mail
 
Étudiant
Inscription : avril 2011
Messages : 19
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 19
Points : 34
Points : 34
Bonjour,
Aprés analyse rapide, je pense que dans
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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_doc) === 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.";
 }
 
?>
Il faut changer $content par $content_doc(Mis en rouge dans le code) qu'a mis Finality dans sa réponse qui contient tout le doc
dev_cisii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 18h42   #5
Membre éclairé
 
Homme
Webmaster
Inscription : septembre 2007
Messages : 376
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2007
Messages : 376
Points : 377
Points : 377
Citation:
Envoyé par ghir_ana Voir le message
Le problème n'est pas réglé toujours un seul enregistrement sauf qu'il m'affiche le dernier enregistrement
Pas facile de deviner sans code ...
et un petit "bonjour" ou "merci" ça n'a jamais tué personne
Finality est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h02.


 
 
 
 
Partenaires

Hébergement Web