[PHPword] pb ouverture de tous les profils dans un seul doc
Bonjour,
Je viens vers vous car j'aurais besoin de vos lumières pour me guider ...
J'ai réussi à installer PHPword qui permet downloader des fichiers .doc que l'on peut lire en format .ODT jusque là ça va. J'ai pu créer une page modèle type avec des variables à l'intérieur exemple pour le nom: $nom ; j'ai enregistré le fichier au format facture.html.
voici le lien du tutoriel .
J'ai un tableau avec 5 lignes et 5 profils et comme vous pouvez vous en douter 1 lien par profil le lien redirige vers export.php où l'on peut cliquer sur un lien href pour afficher ledit document .doc;
une redondance de clics inutiles pour ma part j'ai donc forcé le download directement seulement il m'affiche le document en brut (html)
Lorsque je clique sur le lien de téléchargement il m'affiche tous les noms renseignés de mon tableau dans un seul document word sur plusieurs pages successives alors que je souhaite que l'id sélectionné.
je vous joins le fichier export.php histoire d'avoir un aperçu de la chose et vous remercie
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 70 71
| <?php
// Connexion à la BDD
$bddname = 'crud2';
$hostname = 'localhost';
$username = 'root';
$password = '';
$db = mysqli_connect ($hostname, $username, $password, $bddname);
$req = "SELECT * FROM users WHERE id=".$_GET['id'];
$rep = mysqli_query($db, $req);
if(!$rep)
{
die("Database query failed: " . mysql_error());
}
if(isset($_GET['id']))
{
$row = mysqli_fetch_array($rep, MYSQL_ASSOC);
printf ("%s (%s)\n", $row["first_name"], $row["first_name"]);
$content=file_get_contents('Profil.html');
$nom = $row["first_name"];
$content=str_replace('$nom',$nom,$content);
}
$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.";
}
//Permet de forcer le téléchargement du fichier sans cliquez sur le lien
//mais affiche tous les documents en brute en html dans word
if (file_exists($filename)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;
}
?> |
et fetch.php
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| <?php
include('db.php');
include('function.php');
$query = '';
$output = array();
$query .= "SELECT *, DATE_FORMAT(date, '%d/%m/%Y') AS 'date', DATE_FORMAT(date2, '%d/%m/%Y') AS 'date2' FROM users ";
if(isset($_POST["search"]["value"]))
{
$query .= 'WHERE first_name LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR last_name LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR date LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR date2 LIKE "%'.$_POST["search"]["value"].'%" ';
}
if(isset($_POST["order"]))
{
$query .= 'ORDER BY '.$_POST['order']['0']['column'].' '.$_POST['order']['0']['dir'].' ';
}
else
{
$query .= 'ORDER BY date DESC, date2 DESC ';
}
if($_POST["length"] != -1)
{
$query .= 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
}
$statement = $connection->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$data = array();
$filtered_rows = $statement->rowCount();
foreach($result as $row)
{
//$date=$row["date2"];
//$today = date("d-m-Y");
//$today2 = date("d/m/Y", strtotime('+3 year'));
//if ($today>$date){
//$color="red";
//}
//else if ($today2>$date){
//$color="orange";
//}
//else
// {
// $color="black";
//}
$date = DateTimeImmutable::createFromFormat('d/m/Y', $row['date2']);
$today = new DateTimeImmutable();
$color = 'red';
if ($date < $today) {
if ($date >= $today->modify('-3 years')) {
$color = 'red';
} elseif ($date >= $today->modify('-5 years')) {
$color = 'red';
}
}
if ($date > $today) {
if ($date <= $today->modify('+3 years')) {
$color = 'orange';
} elseif ($date <= $today->modify('+5 years')) {
$color = 'black';
}
}
$image = '';
if($row["image"] != '')
{
$image = '<a href="upload/'.$row["image"].'"" target="_blank"><IMG src="upload/pdf.png" alt=".pdf"></a>';
}
else
{
$image = '';
}
$image1 = '';
if($row["image1"] != '')
{
$image1 = '<a href="certif/'.$row["image1"].'"" target="_blank"><IMG src="upload/pdf.png" alt=".pdf"></a>';
}
else
{
$image1 = '';
}
$sub_array = array();
$sub_array[] = $image1;
$sub_array[] = $image;
$sub_array[] = $row["date"];
$sub_array[] = '<font color="'.$color.'">'.$row["date2"].'</font>';
$sub_array[] = $row["first_name"];
$sub_array[] = $row["last_name"];
$sub_array[] = '<a href="export.php?id='.$row['id'].'">voir</a>';
$data[] = $sub_array;
}
$output = array(
"draw" => intval($_POST["draw"]),
"recordsTotal" => $filtered_rows,
"recordsFiltered" => get_total_all_records(),
"data" => $data
);
echo json_encode($output);
?> |