Remplir un document Word avec Base de données SQL

Fermé
Lurgod_9827 Messages postés 2 Date d'inscription vendredi 24 mai 2019 Statut Membre Dernière intervention 24 mai 2019 - 24 mai 2019 à 09:51
teamside Messages postés 2 Date d'inscription dimanche 26 mai 2019 Statut Membre Dernière intervention 26 mai 2019 - 26 mai 2019 à 15:45
Bonjour, j'ai un projet et je suis bloqué dessus.
En gros, via une page Web(PHP) qui contient des données de ma base de données je dois remplir un document Word

(exemple : Ma base de données contient que des fiches clients, je recherche un certain client sur ma page Web, j'ouvre son profil/sa fiche client, et dans sa fiche client il y a un petit bouton pour créer un devis/une facture (Word) à partir de tout les éléments présent de la fiche client et d'un fichier Word pré-rempli.)
J'arrive à créer un fichier Word à partir d'un autre, mais pas à changer les "Valeurs" dedans
(J'utlise WampServer et PHPMyAdmin)

Est ce que vous pouvez m'aider..?

Voici mon code :

<HTML>
<?php
try
{

$bdd = new PDO('mysql:host=localhost;dbname=drow;charset=utf8', 'root', '');
}
catch(Exception $e)
{

die('Erreur : '.$e->getMessage());
}

?>

<table border="1px" style="border-color: #c1c1c1" >
<tr>
<td style="background-color: lightgrey">ID</td>
<td>Entreprise</td>
<td>Nom</td>
<td>Code Postal</td>
</tr>
<form id="bouton" name="bouton" method="post">
<p><input type="submit" name="bouton" value ="VERS WORD"></p>
</form>
<?php


$reponse = $bdd->prepare('SELECT * FROM btob WHERE Entreprise = ?');
$reponse->execute(array($_GET['Entreprise']));
// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<tr>
<td style="background-color: lightgrey"><?php echo $donnees['id']; ?></td>
<td><?php echo $donnees['Entreprise']; ?></td>
<td><?php echo $donnees['Nom']; ?></td>
<td><?php echo $donnees['CP']; ?></td>
</tr>
<?php
}
?>
</table>
<?php
$reponse->closeCursor(); // Termine le traitement de la requête

if(isset($_POST['bouton'])) {
$todayfichier = date("d.m.y_H-i");
$today = date("d.m.y");

$nom_fichier = 'devis.'.$todayfichier.'.docx';
$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Facture.docx';
$myContent = file_get_contents($file);

$myContent = str_replace("@Date@",$today,$myContent);
$myContent = str_replace("@CP@",$donnees['CP'],$myContent);
$myContent = str_replace("@Nom@",$donnees['Nom'],$myContent);
$myContent = str_replace("@Entreprise@",$donnees['Entreprise'],$myContent);

$newFile = fopen("$nom_fichier", "a");
fwrite($newFile,$myContent);
fclose($newFile);

}

?>
</HTML>


Mon document Word contient seulement : @Date@ @Entreprise@ @Nom@ et @CP@
Tout est situé dans le même dossier dans mon WampServer

Si vous voulez mon Index.html (c'est là que je recherche dans ma bdd) :

<!doctype html>
<html lang="fr">
<html>
<head>
<meta charset="UTF-8"/>
<title>Accès aux mesures de la serre</title>
</head>

<body>
<h1>BDD</h1>
<div class="page">
<form action="BddVersWord.php" method="GET">
<table>
<tr>
<td>Entreprise:</td>
<td><input type="text" name="Entreprise" size="20"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="EnvValeur" value ="Envoyer"></td>
</tr>
</table>
</form>
</div>
</body>
</html>


Si quelqu'un peut m'aider c'est très gentil de sa part
A voir également:

2 réponses

jordane45 Messages postés 38446 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 février 2025 4 737
24 mai 2019 à 10:55
Bonjour,

Si tu veux manipuler un fichier Word, utilises la classe phpword
https://github.com/PHPOffice/PHPWord
https://phpword.readthedocs.io/en/latest/

0
Lurgod_9827 Messages postés 2 Date d'inscription vendredi 24 mai 2019 Statut Membre Dernière intervention 24 mai 2019
24 mai 2019 à 11:00
Ca à l'air compliquer ^^'
Et on peut modifier un document déjà existant avec ça ?
0
jordane45 Messages postés 38446 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 février 2025 4 737 > Lurgod_9827 Messages postés 2 Date d'inscription vendredi 24 mai 2019 Statut Membre Dernière intervention 24 mai 2019
24 mai 2019 à 11:07
oui
0
teamside Messages postés 2 Date d'inscription dimanche 26 mai 2019 Statut Membre Dernière intervention 26 mai 2019
Modifié le 26 mai 2019 à 15:46
Si tu n'as que quelques valeurs à remplacer tu peux utiliser sprintf https://www.php.net/manual/en/function.sprintf.php

Dans ton document générique tu mets des %s là où les valeurs doivent exister puis

$content = sprintf(file_get_contents('path_to_generic_file.doc'), $value1, $value2, $value3, $value4);
file_put_contents('path_to_new_file.doc', $content);
0