set('isHtml5ParserEnabled', true); $options->set('isRemoteEnabled', true); $dompdf->setOptions($options); require_once '../Connections/cmctrfdb.php'; require_once '../webassist/mysqli/rsobj.php'; //include 'include/headscript.php'; include('languages/' . $_SESSION['langselect'] . '/tdgen.php'); include('languages/' . $_SESSION['langselect'] . '/general.php'); $idcompany = $_SESSION["compid"]; if (isset($_GET['idtrftd'])) { $idtrftd = $_GET['idtrftd']; } if (isset($_POST['idtrftd'])) { $idtrftd = $_POST['idtrftd']; } if (isset($_POST['iddata_td'])) { $idtd = $_POST['iddata_td']; } if (isset($_GET['iddata_td'])) { $idtd = $_GET['iddata_td']; } if (isset($_GET['idtd'])) { $idtd = $_GET['idtd']; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Preparazione di un array per contenere i valori sanificati $sanitizedPost = []; $errors = []; // Lista dei campi da sanificare e controllare se sono piene $fields = [ 'productionplace_same', 'classificationshoes', 'destinationuseppe', 'manufacutringprocess', 'ppeageing', 'obsolescencedeadline', 'localisationppemarking', 'manufacturerlogoid', 'sizeexamplecemark', 'monthyearprod', 'serialbatchnumber', 'standarduse', 'symbolsaddreq', 'proddescription', 'packaging', 'declarconformity', 'webaddress' ]; foreach ($fields as $field) { if (!empty($_POST[$field])) { // Utilizzo FILTER_SANITIZE_STRING per rimuovere i tag e sanificare il testo $sanitizedPost[$field] = filter_input(INPUT_POST, $field, FILTER_SANITIZE_STRING); } } // Controllo se ci sono stati errori if (count($errors) === 0) { // Tutti i campi sono stati compilati e sanificati // Qui puoi procedere con l'elaborazione dei dati // Ad esempio, stampare i valori o salvarli in un database foreach ($sanitizedPost as $key => $value) { } } else { // Ci sono stati errori, ad esempio alcuni campi potrebbero essere vuoti // Puoi gestire gli errori qui, ad esempio stampandoli foreach ($errors as $key => $message) { echo "Errore nel campo $key: $message
"; } } } // *: update data_td // Assicurati che la richiesta sia di tipo POST e che l'ID sia stato fornito $conn = mysqli_connect($servername, $username, $password, $dbname); if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($idtrftd)) { // Preparazione della parte iniziale della query di aggiornamento $updateQuery = "UPDATE data_td SET "; $updateParts = []; $queryParams = []; // Iterazione sui campi sanificati per costruire la query di aggiornamento foreach ($sanitizedPost as $key => $value) { // Escludi idtrftd dalla parte di aggiornamento della query if ($key !== 'idtrftd') { $updateParts[] = "$key = ?"; $queryParams[] = $value; } } // Controllo se ci sono campi da aggiornare if (count($updateParts) > 0) { $updateQuery .= join(', ', $updateParts) . " WHERE idtrf = ?"; $queryParams[] = $idtrftd; // Aggiungi l'ID alla fine dei parametri della query // Preparazione della query $stmt = $conn->prepare($updateQuery); // Costruzione del tipo di parametri (stringhe, in questo caso) $types = str_repeat('s', count($queryParams)); // Aggiunta dei parametri alla statement $stmt->bind_param($types, ...$queryParams); // Esecuzione della query if ($stmt->execute()) { } // Chiusura dello statement $stmt->close(); } } $conn = new mysqli($servername, $username, $password, $dbname); $checkQuery = "SELECT COUNT(*) as count FROM fillrisk_td WHERE iddata_td = ?"; $stmt = $conn->prepare($checkQuery); $stmt->bind_param("i", $idtd); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); if ($row['count'] == 0) { // Non ci sono record, quindi procedi con l'inserimento dei dati da riskarea_td // Prendi tutti i record da riskarea_td $selectQuery = "SELECT * FROM riskarea_td"; $result = $conn->query($selectQuery); while ($riskRow = $result->fetch_assoc()) { // Prepara l'insert per ogni riga trovata in riskarea_td $insertQuery = "INSERT INTO fillrisk_td (idriskarea_td, applicable, idcompany, iddata_td, idtrf) VALUES (?, ?, ?, ?, ?)"; $stmt = $conn->prepare($insertQuery); // Converte il valore 'Y'/'N' della colonna default in un intero (1/0) $applicableValue = ($riskRow['default'] == 'Y') ? 1 : 0; $stmt->bind_param("iiiii", $riskRow['idriskarea_td'], $applicableValue, $idcompany, $idtd, $idtrftd); $stmt->execute(); } } // Chiudi lo statement e la connessione se non ti servono più $stmt->close(); $conn->close(); // query data_td $conn = new mysqli($servername, $username, $password, $dbname); $sql = "SELECT * FROM data_td LEFT JOIN logo_td ON data_td.manufacturerlogoid=logo_td.idlogo_Td LEFT JOIN qualcheck_td ON data_td.proddescription=qualcheck_td.idqualcheck_td WHERE iddata_td = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param("i", $idtd); // "i" indica che l'id è un intero $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); $prodplace = $row['productionplace_same']; $classshoes = $row['classificationshoes']; $stmt->close(); $conn->close(); $tdquery = new WA_MySQLi_RS("tdquery", $cmctrfdb, 1); $tdquery->setQuery("SELECT * FROM `trf-details` LEFT JOIN modelarticle ON modelarticle.idmodelarticle=`trf-details`.model WHERE `trf-details`.idtrfdetails='$idtrftd'"); $tdquery->execute(); $description = $tdquery->getColumnVal("sample_description"); $trfn = $tdquery->getColumnVal("trfnumber"); $trfrev = $tdquery->getColumnVal("revtrf"); $trfnumb = $trfn . ' VER.' . $trfrev; $photoone = $tdquery->getColumnVal("photoone"); $phototwo = $tdquery->getColumnVal("phototwo"); $virusprot = $tdquery->getColumnVal("virusprotection"); $conn = new mysqli($servername, $username, $password, $dbname); $kindcont = "headercertificate"; // Usa segnaposti per i parametri $sqlcontact = "SELECT * FROM contacts LEFT JOIN countries ON countries.idcountries=contacts.country WHERE contacts.idtrf='$idtrftd' AND contacts.kindofcontacts='$kindcont'"; // Esecuzione della query $resultcontact = $conn->query($sqlcontact); $rowcontact = $resultcontact->fetch_assoc(); $companyname = $rowcontact["companyname"]; $address = $rowcontact["address"] . ' ' . $rowcontact["cap"] . ' ' . $rowcontact["city"]; $country = $rowcontact["namecountry"]; $phone = $rowcontact["telephone"]; $emailtd = $rowcontact["email"]; $vat = $rowcontact["piva"]; $mark = $tdquery->getColumnVal("registeredmark"); $contactperson = $rowcontact["contactname"] . ' ' . $rowcontact["contactsurname"]; // Chemical agent $conn = new mysqli($servername, $username, $password, $dbname); $sqlchemical = "SELECT * FROM trfchemicalagent LEFT JOIN chemicalagent ON trfchemicalagent.idchemicalagent = chemicalagent.idchemicalagent WHERE trfchemicalagent.idtrf = '$idtrftd'"; $resultchemical = $conn->query($sqlchemical); $chemicalAgents = []; // Array per memorizzare i risultati if ($resultchemical && $resultchemical->num_rows > 0) { // Riempie l'array con i risultati della query while ($rowchemical = $resultchemical->fetch_assoc()) { $chemicalAgents[] = $rowchemical["name_chemicalagent"]; } } $conn->close(); // Protection cat add $conn = new mysqli($servername, $username, $password, $dbname); $sqlprotect = "SELECT * FROM trfaddrequirements LEFT JOIN additionalrequirements ON trfaddrequirements.idadditionalrequirements = additionalrequirements.idadditionalrequirements WHERE trfaddrequirements.idtrf = '$idtrftd'"; $resultprotect = $conn->query($sqlprotect); $protectionAdd = []; // Array per memorizzare i risultati if ($resultprotect && $resultprotect->num_rows > 0) {; // Riempie l'array con i risultati della query while ($rowprotect = $resultprotect->fetch_assoc()) { $protectionAdd[] = $rowprotect["name_additionalrequirements_it"]; } } $conn->close(); // Connessione al database $conn = new mysqli($servername, $username, $password, $dbname); // Controlla la connessione if ($conn->connect_error) { die("Connessione fallita: " . $conn->connect_error); } // Preparazione della query $tdquerystd = "SELECT * FROM trfstandards LEFT JOIN standards ON trfstandards.idstandards = standards.idstandards LEFT JOIN protectioncategory ON protectioncategory.idprotectioncategory = trfstandards.idprotectioncategory LEFT JOIN dpicategory ON dpicategory.iddpicategory = trfstandards.iddpicategory WHERE trfstandards.idtrfdetails = '$idtrftd'"; // Esecuzione della query $resultstd = $conn->query($tdquerystd); if (!$resultstd) { die("Errore nell'esecuzione della query: " . $conn->error); } $tdquerystd = new WA_MySQLi_RS("tdquerystd", $cmctrfdb, 1); $tdquerystd->setQuery("SELECT * FROM trfstandards LEFT JOIN standards ON trfstandards.idstandards=standards.idstandards LEFT JOIN protectioncategory ON protectioncategory.idprotectioncategory=trfstandards.idprotectioncategory LEFT JOIN dpicategory ON dpicategory.iddpicategory=trfstandards.iddpicategory WHERE trfstandards.idtrfdetails='$idtrftd'"); $tdquerystd->execute(); $archivetrflist = new WA_MySQLi_RS("archivetrflist", $cmctrfdb, 0); $archivetrflist->setQuery("SELECT * FROM `trf-details` LEFT JOIN auth_users ON `trf-details`.iduser=auth_users.id LEFT JOIN article_type ON `trf-details`.idarticletype=article_type.idarticletype LEFT JOIN certificationtype ON certificationtype.idcertificationtype=`trf-details`.idcertification WHERE `trf-details`.idcompany='$idcompany' AND `trf-details`.signedon <>'' ORDER BY `trf-details`.trfnumber"); $archivetrflist->execute(); // query prod place //query location place // Assumendo che $idt sia già definito e sanificato per prevenire SQL Injection $conn = new mysqli($servername, $username, $password, $dbname); $querylocation = "SELECT idcontactstd, companyName, address, city FROM contacts_td WHERE idtd = ?"; $stmt = $conn->prepare($querylocation); $stmt->bind_param("i", $idtd); // "i" indica che il parametro è un intero $stmt->execute(); $result = $stmt->get_result(); $rowslocation = []; while ($rowlocation = $result->fetch_assoc()) { $rowslocation[] = $rowlocation; } $stmt->close(); // Crea una nuova istanza di Dompdf $options = new Options(); $options->set('isRemoteEnabled', true); $dompdf = new Dompdf($options); $html = <<
Logo Azienda
DATI DEL FABBRICANTE / MANUFACTURER'S DATA
Nome Azienda / Company Name $companyname
Indirizzo / Address $address
Paese / Country $country
Telefono / Phone $phone
Email $emailtd
Partita IVA / VAT Number $vat
Marchio / Mark $mark
Persona di Contatto / Contact Person $contactperson
HTML; // prod place $html .= ''; foreach ($rowslocation as $rowlocation) { $html .= ""; }; $html .= '
LUOGO DI PRODUZIONE / PRODUCTION SITE
CompanyName Address City
{$rowlocation['companyName']} {$rowlocation['address']} {$rowlocation['city']}
'; //DPI DATA $model = $tdquery->getColumnVal("namemodelarticle"); $measuremin = $tdquery->getColumnVal("measurefrom"); $measuremax = $tdquery->getColumnVal("measureto"); $destppe = $row['destinationuseppe']; $tdnumb = $row['tdnumber']; $manprocess = $row['manufacutringprocess']; $ppeage = $row['ppeageing']; $obsol = $row['obsolescencedeadline']; if ($ppeage == 'Y') { $ppeagetext = 'Sì'; } else { $ppeagetext = 'No'; } $html .= << DATI RELATIVI AL DPI / PPE DATA Codice Articolo {$description} Modello {$model} Classificazione {$classshoes} Misura {$measuremin} - {$measuremax} Destinazione d'uso del DPI {$destppe} Processo di lavorazione {$manprocess} DPI soggetto ad invecchiamento {$ppeagetext} HTML; // dpi standard $html .= ''; while ($rowstd = $resultstd->fetch_assoc()) { $stdcode = $rowstd['standardcode']; $dpicat = $rowstd['value_dpicategory']; $html .= ""; }; $html .= '
Norme armonizzate di riferimento {$stdcode} Categoria del DPI {$rowstd['value_dpicategory']}
'; //photos da fare // virus prot if ($virusprot == "Y") : $html .= ''; $html .= '
Protezione da Virus {}
'; endif; // chem agent if (!empty($chemicalAgents)) : $html .= ''; foreach ($chemicalAgents as $name_chemicalagent) : $html .= ""; endforeach; $html .= '
Chemical Agent
{$name_chemicalagent}
'; endif; //table risk query $riskquery = new WA_MySQLi_RS("riskquery", $cmctrfdb, 0); $riskquery->setQuery("SELECT * FROM fillrisk_td LEFT JOIN riskarea_td ON riskarea_td.idriskarea_td=fillrisk_td.idriskarea_td WHERE fillrisk_td.iddata_td = '$idtd' ORDER BY fillrisk_td.idfillrisk_td"); $riskquery->execute(); $html .= ""; $html .= << HTML; // Aggiungi qui il codice PHP fornito while (!$riskquery->atEnd()) { $risknumber = $riskquery->getColumnVal("risknumber"); $riskname_it = $riskquery->getColumnVal("riskname_it"); $applicable = ($riskquery->getColumnVal("applicable") == "1") ? 'checked' : ''; $customCheckId = "customCheck{$risknumber}"; $covertext = ''; if ($riskquery->getColumnVal("coveredby") == 'coverone') { $covertext = $coverone; } else if ($riskquery->getColumnVal("coveredby") == 'covertwo') { $covertext = $covertwo; } else if ($riskquery->getColumnVal("coveredby") == 'coverthree') { $covertext = $coverthree; } $html .= << HTML; $riskquery->moveNext(); } $html .= << HTML; $html .= '
VALUTAZIONE DEI RISCHI (REQUISITI ESSENZIALI DI SALUTE E SICUREZZA IN ACCORDO ALL'ALLEGATO II DEL REGOLAMENTO (UE) 2016/425) / RISK ASSESSMENT (ESSENTIAL HEALTH AND SAFETY REQUIREMENT ACCORDING TO ANNEX II OF THE REGULATION (EU) 2016/425)
{$requirementnumbertd} {$requirementnametd} {$applicabletd} {$covertbytd}
{$risknumber} {$riskname_it}
{$covertext}
'; //parts $html .= ""; $partsquery = new WA_MySQLi_RS("partsquery", $cmctrfdb, 0); $partsquery->setQuery("SELECT * FROM identificationparts WHERE identificationparts.idtrfdetails='$idtrftd'"); $partsquery->execute(); while (!$partsquery->atEnd()) { $html .= ""; $partsquery->moveNext(); } $html .= '
COMPONENTI DEL DPI / PPE PARTS
N. {$descriptionpart} {$articlepart} {$colorpart} {$descriptionpartlist} {$reprtonumbertrdlabtitle} {$trddatereporttitle}
{$partsquery->getColumnVal('partsidnumber')} {$partsquery->getColumnVal('description_identificationparts')} {$partsquery->getColumnVal('article_identificationparts')} {$partsquery->getColumnVal('color_identificationparts')} {$partsquery->getColumnVal('material_identificationparts')} {$partsquery->getColumnVal('cmcreportnumber_identificationparts')} {$partsquery->getColumnVal('cmcreportdate_identificationparts')}
'; //ce mark example $localisationppemarking = $row['localisationppemarking']; $sizeexamplecemark = $row['sizeexamplecemark']; $manufacturerlogoid = $row['manufacturerlogoid']; $filenamelogo = $row['filenamelogo']; $monthyearprod = $row['monthyearprod']; $serialbatchnumber = $row['serialbatchnumber']; $standarduse = $row['standarduse']; $symbolsaddreq = $row['symbolsaddreq']; $proddescription = $row['qualchecktext']; $filenamelogowithpath = "http://localhost/cmccopiaoriginale/public/logos/" . $filenamelogo; $html .= << ESEMPIO DI MARCATURA CE / EXAMPLE OF CE MARKING Posizione della marcatura sul DPI {$localisationppemarking} Marchio del fabbricante Codice Articolo {} Indirizzo del fabbricante {} Misura {$sizeexamplecemark} Mese ed anno di produzione {$monthyearprod} Numero di serie e/o di lotto {$serialbatchnumber} Numero ed anno della norma armonizzata utilizzata {$standarduse} Simbolo/i dei requisiti supplementari {$symbolsaddreq} Marcatura CE CE Image HTML; //mezzi di controllo $html .= << MEZZI DI CONTROLLO E PROVA IN PRODUZIONE PER GARANTIRE LA CONFORMITÀ / MEANS USED DURING THE PRODUCTION TO ENSURE THE CONFORMITY $proddescription HTML; //imballaggio $packaging = $row['packaging']; $declarconformity = $row['declarconformity']; $webaddress = $row['webaddress']; if ($declarconformity == 'declarone') { $declartext = $declarone; } else { $declartext = $declartwo; } $html .= << IMBALLAGGIO / PACKAGING - DICHIARAZIONE DI CONFORMITÀ UE / EU DECLARATION OF CONFORMITY Imballaggio {$packaging} Dichiarazione di conformità UE {$declartext} Indirizzo del sito web {$webaddress} HTML; // chiusura $html .= ''; // Carica il tuo HTML nel Dompdf $dompdf->loadHtml($html); // (Opzionale) Imposta il formato e l'orientamento della pagina $dompdf->setPaper('A4', 'portrait'); // Puoi specificare la dimensione del documento e l'orientamento come segue: // $dompdf->setPaper('A4', 'landscape'); // Renderizza il PDF $dompdf->render(); // Stream il PDF al browser $dompdf->stream("documento.pdf", array("Attachment" => false)); // Cambia "Attachment" a true se vuoi forzare il download del PDF