IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

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


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 172
    Points : 0
    Points
    0
    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 : 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
    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 : 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
    <?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.";
     }
     
    ?>

  2. #2
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    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 : 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
     
    $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);
    }

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Le problème n'est pas réglé toujours un seul enregistrement sauf qu'il m'affiche le dernier enregistrement

  4. #4
    En attente de confirmation mail
    Profil pro
    Étudiant
    Inscrit en
    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 : 36
    Points
    36
    Par défaut
    Bonjour,
    Aprés analyse rapide, je pense que dans
    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
    <?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

  5. #5
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    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

Discussions similaires

  1. Générer un document Word à partir de PHP
    Par combe_6 dans le forum Langage
    Réponses: 8
    Dernier message: 13/05/2015, 20h35
  2. Générer un document word ou excel à partir un site PHP
    Par MarylouTe dans le forum Langage
    Réponses: 0
    Dernier message: 26/05/2014, 09h47
  3. Modifier l'entête d'un document Word à partir de PHP
    Par CarambaConcept dans le forum Langage
    Réponses: 0
    Dernier message: 30/05/2012, 14h58
  4. [FPDF] Générer un document PDF à partir d'un modèle en Word
    Par boumacmilan dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 08/07/2010, 15h49
  5. Générer un document Word à partir d'un arbre XML
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 1
    Dernier message: 31/03/2009, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo