会社の従業員のすべてのデータとドキュメントを記録するページに取り組んでいます。その機能の一部は、私が苦労している部分である ID カードを生成することです。
最初にコンポーザーをインストールし、それを使用してプロジェクトのルート (php ページがある場所) に PHPWord ライブラリをインストールすることで PHP Word をダウンロードし、次のファイルとフォルダーをインストールしました。
-composer.lock -composer.json -vendor (これはすべてのライブラリを含むフォルダーです)
「vendor」サブフォルダーとファイル: -autoload.php -composer (フォルダー) -pclzip (フォルダー) -phpoffice (フォルダー) -zendframework (フォルダー)
インストールするために必要なことはそれだけだと思ったので、コードの追加に進みました。問題は、それが機能しないことです...コードは次のとおりです。さらに説明するためにコメントを追加しました。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
require_once 'conector_superadmin.php';
$link = connect($conn);
//Retrieving the id number sent via url to get the employee number
$idSelectedEmployee = $_GET['SelectedEmployee'];
//Data taken from small form with extra information for the ID Card
$idType = $_POST['idType'];
$ValidFrom = $_POST['ValidFrom'];
$ExpiresOn = $_POST['ExpiresOn'];
//Retrieving employee's information from "employees" table in db
$sql = "SELECT * FROM employees WHERE idEmployee = '$idSelectedEmployee'";
$result = mysqli_query($link, $sql);
while($row = mysqli_fetch_array($result)){
$FullName = $row['FullName'];
$Position = $row['Position'];
$EmployeeNum = $row['EmployeeNum'];
$BloodType = $row['BloodType'];
$Alergies = $row['Alergies'];
$PhoneNum = $row['PhoneNum'];
}
//The company uses two kinds of id cards, so i use these conditionals to get the type from a “select” field, it does work, i tested it
if($idType == "Plastic"){
//This code inside however is what isn’t working at all, it won't do anything despite taking this code from their template
include_once 'Sample_Header.php';
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('IDCards/Templates/ID_TEST.docx');
//I am using in the docx file the “${Variable}” format as the template and other documentation explains
$templateProcessor->setValue('EmployeeName', $FullName);
$templateProcessor->setValue('PhoneNum', $PhoneNum);
$templateProcessor->setValue('BloodType', $BloodType);
$templateProcessor->setValue('Alergies', $Alergies);
$templateProcessor->setValue('EmployeeNum', $EmployeeNum);
$templateProcessor->setValue('Position', $Position);
$templateProcessor->setValue('ValidFrom', $ValidFrom);
$templateProcessor->setValue('ExpiresOn', $ExpiresOn);
$templateProcessor->saveAs('IDCards/PlasticID.docx');
}
if($idType == "Paper"){
//Still empty
}
//I created this table to insert the data taken from the “employees’ table, just for the purpose of testing if all the information was retrieved correctly, needless to say, it works fine
$CredencialQuery = "INSERT INTO `idCards` (`idID`, `FullName`, `PhoneNum`, `BloodType`, `Alergies`, `EmployeeNum`, `Position`, `ValidFrom`, `ExpiresOn`, `idType`) VALUES (NULL, '$FullName', '$PhoneNum', '$BloodType', '$Alergies', '$EmployeeNum', '$Position', '$ValidFrom', '$ExpiresOn', '$idType');";
mysqli_query($link, $CredencialQuery);
}
?>
ええ、問題自体がPHPWordコードである可能性があることに気付きました。コードの何かが間違っているか、ライブラリが適切にインストールされていないかのいずれかです。phpテンプレート自体を実行して、それが機能するかどうかをテストしようとしましたが、機能しません