TCPDF:为什么即使单击不同单元格的按钮,"generate pdf" 按钮也显示相同的数据?
TCPDF: why "generate pdf" button shows the same data even when different cell's button is clicked?
我正在使用 DataTable
显示数据,每个单元格都有“编辑、删除、生成 PDF”。使用 Ajax 的添加、编辑和删除功能工作正常。单击“生成 PDF”时,它会在新选项卡中打开,其中包含单击单元格按钮的数据。但是,当我点击其他按钮时,它总是显示第一个单元格的数据,即使 URL 包含该单元格的 id
如何根据按钮点击将数据传输到 PDF?
$statement = $connection->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$data = [];
$filtered_rows = $statement->rowCount();
foreach ($result as $row) {
$sub_array = [];
$sub_array[] = $row["cccEmployee"];
$sub_array[] = $row["irNumber"];
$sub_array[] = $row["caseType"];
$sub_array[] = $row["caseLocation"];
$sub_array[] = $row["startDateTime"];
$sub_array[] = $row["endDateTime"];
// $sub_array[] = $row["caseDesc"];
// $sub_array[] = $row["actionsTaken"];
// $sub_array[] = $row["caseDetails"];
// $sub_array[] = $row["caseNotes"];
// $sub_array[] = $row["caseRecommendation"];
$sub_array[] = '<a href="javascript:void(0)" name="update" class="update_report" title="Edit" id="'.$row["id"] .'">
<i class="fas fa-edit"></i>
</a>';
$sub_array[] = '<a href="javascript:void(0)" name="delete" class="delete_report" title="Delete" id="'.$row["id"] .'">
<i class="fas fa-trash-alt"></i>
</a>';
$sub_array[] = '<a href="/test-pdf/'.$row['id'].'" target="_blank" id="'.$row["id"] .'">
<input type="submit" class="btn btn-danger generate_pdf" name="generate_pdf" id="generate_pdf" value="Generate PDF"/>
</a>'; // This is the code for the PDF.
$data[] = $sub_array;
}
$output = [
"draw" => intval($_POST["draw"]),
"recordsTotal" => $filtered_rows,
"recordsFiltered" => get_total_reports(),
"data" => $data,
];
echo json_encode($output);
生成-pdf-report.php:
include('./TCPDF/tcpdf.php');
$query = "SELECT * FROM cases_reports";
$statement = $connection->prepare($query);
$statement->execute();
while( $row = $statement->fetch(PDO::FETCH_ASSOC) ) {
$reportId = $row['id'];
$cccEmployee = $row['cccEmployee'];
}
// Define the variables
ob_start();
// make TCPDF object
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
// set document information
$pdf->SetCreator('Mushref'); // $cccEmployee
$pdf->SetAuthor('Abdulrahman Mushref'); // $cccEmployee
$pdf->SetTitle("IR Number here"); // $caseType + $irNumber
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords("Case, PDF, report, 'caseType'"); // $caseType
// add a page
$pdf->AddPage();
// Remove default header/footer
$pdf->setPrintFooter(false);
// set some text to print
$content = '';
$content .= '
<div>
<h4 align="center"> TEST '.$reportId.'</h4>
<h4 align="center"> Employee Name: '.$cccEmployee.'</h4>
';
$content .= '</div>';
$pdf->writeHTML($content);
//Close and output PDF document
ob_end_clean();
$pdf->Output('test.pdf', 'I');
我正在使用此库进行路由,检查 /test-pdf,因为它是 TCPDF 代码的 url。
// FOR TESTING
get('/test-pdf', '/backend/reports/generate-pdf-report.php');
get('/test-pdf/$report_id', '/backend/reports/generate-pdf-report.php');
您没有将变量传递给 PDF 生成器 PHP 文件,而且在 PDF 生成文件中未使用 $row['id'],这就是您获得相同结果的原因数据.
少数几个地方的变化将使事情按预期进行。
将 $row['id'] 值传递给 php 文件。
$sub_array[] = '
<a href="/test-pdf/rid/'.$row['id'].'" target="_blank" id="'.$row["id"] .'">
<input type="submit" class="btn btn-danger generate_pdf" name="generate_pdf" id="generate_pdf" value="Generate PDF"/>
</a>'; // This is the code for the PDF.
get('/test-pdf/rid/$rid', '/backend/reports/generate-pdf-report.php');
然后在 php 文件中使用它。
$id = $_GET['rid'];
$query = "SELECT * FROM cases_reports WHERE `id`= ?";
$statement = $connection->prepare($query);
$statement->bind_param("s", $id);
...
我正在使用 DataTable
显示数据,每个单元格都有“编辑、删除、生成 PDF”。使用 Ajax 的添加、编辑和删除功能工作正常。单击“生成 PDF”时,它会在新选项卡中打开,其中包含单击单元格按钮的数据。但是,当我点击其他按钮时,它总是显示第一个单元格的数据,即使 URL 包含该单元格的 id
如何根据按钮点击将数据传输到 PDF?
$statement = $connection->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$data = [];
$filtered_rows = $statement->rowCount();
foreach ($result as $row) {
$sub_array = [];
$sub_array[] = $row["cccEmployee"];
$sub_array[] = $row["irNumber"];
$sub_array[] = $row["caseType"];
$sub_array[] = $row["caseLocation"];
$sub_array[] = $row["startDateTime"];
$sub_array[] = $row["endDateTime"];
// $sub_array[] = $row["caseDesc"];
// $sub_array[] = $row["actionsTaken"];
// $sub_array[] = $row["caseDetails"];
// $sub_array[] = $row["caseNotes"];
// $sub_array[] = $row["caseRecommendation"];
$sub_array[] = '<a href="javascript:void(0)" name="update" class="update_report" title="Edit" id="'.$row["id"] .'">
<i class="fas fa-edit"></i>
</a>';
$sub_array[] = '<a href="javascript:void(0)" name="delete" class="delete_report" title="Delete" id="'.$row["id"] .'">
<i class="fas fa-trash-alt"></i>
</a>';
$sub_array[] = '<a href="/test-pdf/'.$row['id'].'" target="_blank" id="'.$row["id"] .'">
<input type="submit" class="btn btn-danger generate_pdf" name="generate_pdf" id="generate_pdf" value="Generate PDF"/>
</a>'; // This is the code for the PDF.
$data[] = $sub_array;
}
$output = [
"draw" => intval($_POST["draw"]),
"recordsTotal" => $filtered_rows,
"recordsFiltered" => get_total_reports(),
"data" => $data,
];
echo json_encode($output);
生成-pdf-report.php:
include('./TCPDF/tcpdf.php');
$query = "SELECT * FROM cases_reports";
$statement = $connection->prepare($query);
$statement->execute();
while( $row = $statement->fetch(PDO::FETCH_ASSOC) ) {
$reportId = $row['id'];
$cccEmployee = $row['cccEmployee'];
}
// Define the variables
ob_start();
// make TCPDF object
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
// set document information
$pdf->SetCreator('Mushref'); // $cccEmployee
$pdf->SetAuthor('Abdulrahman Mushref'); // $cccEmployee
$pdf->SetTitle("IR Number here"); // $caseType + $irNumber
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords("Case, PDF, report, 'caseType'"); // $caseType
// add a page
$pdf->AddPage();
// Remove default header/footer
$pdf->setPrintFooter(false);
// set some text to print
$content = '';
$content .= '
<div>
<h4 align="center"> TEST '.$reportId.'</h4>
<h4 align="center"> Employee Name: '.$cccEmployee.'</h4>
';
$content .= '</div>';
$pdf->writeHTML($content);
//Close and output PDF document
ob_end_clean();
$pdf->Output('test.pdf', 'I');
我正在使用此库进行路由,检查 /test-pdf,因为它是 TCPDF 代码的 url。
// FOR TESTING
get('/test-pdf', '/backend/reports/generate-pdf-report.php');
get('/test-pdf/$report_id', '/backend/reports/generate-pdf-report.php');
您没有将变量传递给 PDF 生成器 PHP 文件,而且在 PDF 生成文件中未使用 $row['id'],这就是您获得相同结果的原因数据.
少数几个地方的变化将使事情按预期进行。
将 $row['id'] 值传递给 php 文件。
$sub_array[] = '
<a href="/test-pdf/rid/'.$row['id'].'" target="_blank" id="'.$row["id"] .'">
<input type="submit" class="btn btn-danger generate_pdf" name="generate_pdf" id="generate_pdf" value="Generate PDF"/>
</a>'; // This is the code for the PDF.
get('/test-pdf/rid/$rid', '/backend/reports/generate-pdf-report.php');
然后在 php 文件中使用它。
$id = $_GET['rid'];
$query = "SELECT * FROM cases_reports WHERE `id`= ?";
$statement = $connection->prepare($query);
$statement->bind_param("s", $id);
...