104 lines
4.2 KiB
PHP

<?php require_once('../Connections/dbaseconn.php'); ?>
<?php
ob_start(); // Inizia il buffering dell'output
require '../../vendor/autoload.php';
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\IOFactory;
// Collegati al database
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Recupera il uniquecode dal GET
$uniquecode = $_GET['uniquecode'];
// Query per ottenere i dati
$sql = "SELECT material_category, parameter, unit_of_measure, additional_requirement_note
FROM rslxls
WHERE uniquecode = '$uniquecode'
ORDER BY material_category";
$result = $conn->query($sql);
// Crea una nuova istanza di PHPWord e imposta l'orientamento della pagina in landscape
$phpWord = new PhpWord();
$section = $phpWord->addSection(array('orientation' => 'landscape'));
// Se ci sono risultati
if ($result->num_rows > 0) {
// Aggiungi un titolo al documento
$section->addText('Report for Unique Code: ' . htmlspecialchars($uniquecode), array('bold' => true, 'size' => 16));
// Variabile per tracciare la categoria attuale
$currentCategory = null;
while ($row = $result->fetch_assoc()) {
// Se la categoria cambia, crea una nuova tabella per la categoria
if ($currentCategory !== $row['material_category']) {
$currentCategory = $row['material_category'];
// Aggiungi uno spazio bianco prima della tabella del material_category
$section->addTextBreak(1);
// Aggiungi una tabella solitaria per il material_category con sfondo blu scuro e testo bianco
$categoryTable = $section->addTable(array('borderSize' => 1, 'borderColor' => '000000', 'cellMargin' => 50));
$categoryTable->addRow();
$categoryTable->addCell(12000, array('bgColor' => '000080'))->addText(htmlspecialchars($currentCategory), array('bold' => true, 'color' => 'FFFFFF', 'size' => 14), array('alignment' => 'center'));
// Aggiungi uno spazio bianco dopo la tabella del material_category
$section->addTextBreak(1);
// Crea una tabella per i parametri della categoria
$table = $section->addTable(array('borderSize' => 1, 'borderColor' => '000000', 'cellMargin' => 50));
$table->addRow();
$table->addCell(2000, array('bgColor' => 'E6E6FF'))->addText("Parameter", array('bold' => true));
$table->addCell(1500, array('bgColor' => 'E6E6FF'))->addText("Unit", array('bold' => true));
$table->addCell(1000, array('bgColor' => 'E6E6FF'))->addText(""); // Colonna vuota
$table->addCell(3000, array('bgColor' => 'E6E6FF'))->addText("Test method reference", array('bold' => true));
}
// Gestisci il valore della colonna additional_requirement_note e codifica i caratteri speciali
$additionalNote = !empty($row['additional_requirement_note'])
? htmlspecialchars($row['additional_requirement_note'])
: 'N/A';
// Aggiungi una riga per i dati
$table->addRow();
$table->addCell(2000)->addText(htmlspecialchars($row['parameter']));
$table->addCell(1500)->addText(htmlspecialchars($row['unit_of_measure']));
$table->addCell(1000)->addText(""); // Colonna vuota
$table->addCell(3000)->addText($additionalNote);
}
// Aggiungi uno spazio bianco alla fine del documento
$section->addTextBreak(1);
} else {
$section->addText("No records found for uniquecode: " . htmlspecialchars($uniquecode));
}
// Salva il file e invialo al browser per il download
$filename = "RSL_Report_$uniquecode.docx";
// Imposta le intestazioni per il download del file
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
// Pulisci il buffer di output per evitare problemi
ob_clean();
// Salva il file nel buffer e invialo al browser
$objWriter = IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save("php://output");
exit();
?>