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(); ?>