php - mpdf 使用 while 打印包含内部和外部数据的表格
问题描述
我有一个要打印的 pdf 文档,一切正常,直到我需要数据库中的一些数据出现在 while 循环之外。
这是我使用的代码:
<?php
session_start();
$role = $_SESSION['userrole'];
if(!isset($_SESSION['useruid']) || $role!="administrator"){
header('Location: login.php?error=wrongrole');
}
if(!isset($_SESSION['useruid']) && $role!="tutor") {
header('location: login.php?error=wrongrole');
}
require_once ('../vendor/autoload.php');
require_once ('dbh.inc.php');
$ids = explode(',', $_GET['report-id']);
$query_params = [];
$bind_params = '';
foreach($ids as $id){
$query_params[] = '?';
$bind_params .= 'i';
}
$stmt = $conn->prepare("SELECT * from planning
INNER JOIN classes on classes.classesClass = planning.planningClass
WHERE planningId IN(" . implode(',', $query_params) . ")");
$stmt->bind_param($bind_params, ...$ids);
$stmt->execute();
$result = $stmt->get_result();
$mpdf = new \Mpdf\Mpdf(['tempDir' => '/tmp']);
$html = '
<img src="../img/ue-logo.jpg" height="60" width="auto" />
<img style="padding-left: 32%;" src="../img/gr-logo.jpg" height="60" width="auto" />
<img style="padding-left: 32%;" src="../img/is-logo.jpg" height="60" width="auto" />
<br /><br />
<p style="text-align: right; padding-right: 5%;"><strong>ANEXA 4</strong></p>
<br />
<p style="text-align: left;"><strong>
id 130788<br />
"Proiect “Stagii de practică pentru elevii din învățământul tehnic – calificări în servicii”, cod SMIS 130788"<br />
Centralizator activitati stagii de practica luna $MONTH
</strong></p>
<h3 style="text-align: center;">PLANIFICAREA TEMATICA LUNA $MONTH </h3>
<br/>
<table style="border:1px solid black; width:100%; border-collapse: collapse; text-align: center;">
<tr style="border:1px solid black;">
<th style="border:1px solid black;">Clasa</th>
<th style="border:1px solid black;">Domeniu/Sc Profesioanala/Liceu</th>
<th style="border:1px solid black;">Saptamana</th>
<th style="border:1px solid black;">Ora start - Ora terminare</th>
<th style="border:1px solid black;">Angajator</th>
</tr>
';
while ($row = $result->fetch_assoc()) {
$html .= '
<tr>
<td style="border:1px solid black;">' . $row['planningClass'] . '</td>
<td style="border:1px solid black;">' . $row['classesQualification'] . '</td>
<td style="border:1px solid black;">' . $row['planningWeek'] .'</td>
<td style="border:1px solid black;">' . $row['planningHourStart'] . ' - ' . $row['planningHourEnd'] . '</td>
<td style="border:1px solid black;">' . $row['planningCompany'] .'</td>
</tr>';
}
$html .= '</table>';
$mpdf->AddPage('L');
$mpdf->WriteHTML($html);
$mpdf->Output();
问题是我需要在初始化 while 循环之前出现数据库中的月份。我怎样才能做到这一点?有简单的方法吗?我已将 $MONTH 放在我希望循环中的数据所在的位置。
解决方案
知道了。为此,我需要首先从结果集中获取所有数据。可以对多行使用 fetch_all(),否则可以使用 fetch_array() 进行优化。
然后需要访问索引 0 处的行及其键以从所需列中获取值。如果没有行或列不是 SQL 的一部分,则默认值可以是空字符串。
推荐阅读
- azure - 使用 Azure Devops 在 Cloud Hub 上部署 Mule 应用程序
- linux - 从脚本运行时Linux变量值不起作用
- c# - SignalR Core 在 Android 客户端上断开连接
- python - 如何解决我的 Anaconda 环境和 Opencv cv2 之间的冲突?
- c++ - 检查二维数组中是否存在任何数字的程序
- c++ - 类中 C++ 运算符重载的语法
- cefsharp - 使用两个 cefsharp.winforms 实例关闭时,对象引用未设置为对象的实例
- python - 有没有办法获得我的 seaborn 图的 x 轴和 y 轴值?
- c# - 无法打开物理文件“database_log.ldf” 操作系统错误 32
- javascript - 打字稿联合:类型“””上不存在属性“值”