php - 根据 ID 循环遍历数据库内容
问题描述
我有一个带有 MySQL 数据库的 azure PHP Web App。
我需要访问数据库中的 2 个表并遍历每个条目,显示连接到每个 ID 的内容。
数据库设置:
司机
司机ID | 司机姓名 |
---|---|
(人工智能) 1 | 鲍勃 |
打开工作
工作ID | 职位名称 | 工作日期 | 目的地 | 等等等等 | 驱动程序_FK | driverName_FK |
---|---|---|---|---|---|---|
(人工智能) 1 | 工作 1 | 9 月 1 日,星期一 | 新西兰 | 胡说八道 | (从司机那里得到) | (从司机那里得到) |
这是我的代码:我在其他地方也有一个连接。而且我还没有为驱动程序名称添加连接。
function openJobsList()
{
global $conn;
$query = mysqli_query($conn, "SELECT openjobs.jobName, openjobs.jobType, openjobs.orderNumber, openjobs.referenceNumber, openjobs.pallets, openjobs.jobWeight, openjobs.jobStatus, driver.DriverID, driver.driverName
FROM openjobs
INNER JOIN driver ON openjobs.driver_fk = driver.DriverID");
while ($row = mysqli_fetch_assoc($query)) {
$id = $row['DriverID'];
//$driverName_fk = $row['driverName_fk'];
$jobName = $row['jobName'];
$jobType = $row['jobType'];
$orderNumber = $row['orderNumber'];
$referenceNumber = $row['referenceNumber'];
$pallets = $row['pallets'];
$jobWeight = $row['jobWeight'];
$jobStatus = $row['jobStatus'];
echo "<div class='card mainPageJobCard my-2'>
<div class='card-body'>
<div class='row justify-content-between'>
<div class='col-11'>
<h5 class='card-title'>Driver: {$id}</h5>
</div>
<div class='col-1'>
<a href='pages/webAddJob.php' class='btn btn-primary btn-sm text-light rounded-pill'>Add Job</a>
</div>
</div>
<div class='row'>
<div class='col pt-3'>
<table class='table table-bordered table-responsive'>
<thead>
<tr class='table-light'>
<th scope='col' class='col-2'>Job</th>
<th scope='col'>Type</th>
<th scope='col' class='col-2'>Order #</th>
<th scope='col' class='col-2'>Reference</th>
<th scope='col'>Pallets</th>
<th scope='col'>Weight (kg)</th>
<th scope='col' class='col-2'>Status</th>
</tr>
</thead>
<tr>
<th>{$jobName}</th>
<td>{$jobType}</td>
<td>{$orderNumber}</td>
<td>{$referenceNumber}</td>
<td>{$pallets}</td>
<td>{$jobWeight}</td>
<td>{$jobStatus}</td>
</tr>
</table>
</div>
</div>
</div>
</div>";
}
}
成功获取 DriverID 并显示分配给它的所有作业,但它们显示如下:(参见驱动程序 6)
但我需要它来显示分配给 ID 号的每个作业,而不是在不同的块中,如下所示:(忽略设计等方面的差异)
我假设我需要第二个循环才能在第一个循环中运行,但我很难理解我会在第二个循环中放置什么作为条件。
解决方案
你可以做这样的事情
只需使用查询结果创建一个数组,创建一个以驱动程序 ID 作为数组键的多维数组。你会有一个这样的数组,
Array
(
[driver_id1] => Array
(
[0] => [job1]
[1] => [job2]
[2] => [jbo3]
)
[driver_id2] => Array
(
[0] => [job1]
[1] => [job2]
[2] => [jbo3]
)
)
然后循环创建的数组。它将为驱动程序创建一个框,并在表体内创建另一个循环以显示驱动程序的相关工作。
function openJobsList()
{
$data = [];
global $conn;
$query = mysqli_query($conn, "SELECT openjobs.jobName, openjobs.jobType, openjobs.orderNumber, openjobs.referenceNumber, openjobs.pallets, openjobs.jobWeight, openjobs.jobStatus, driver.DriverID, driver.driverName
FROM openjobs
INNER JOIN driver ON openjobs.driver_fk = driver.DriverID");
while($rows = mysqli_fetch_assoc($query)){
$data[$id][] = $rows
}
foreach($rows as $driver => $value ) {
$id = $driver;
echo "<div class='card mainPageJobCard my-2'>
<div class='card-body'>
<div class='row justify-content-between'>
<div class='col-11'>
<h5 class='card-title'>Driver: {$id}</h5>
</div>
<div class='col-1'>
<a href='pages/webAddJob.php' class='btn btn-primary btn-sm text-light rounded-pill'>Add Job</a>
</div>
</div>
<div class='row'>
<div class='col pt-3'>
<table class='table table-bordered table-responsive'>
<thead>
<tr class='table-light'>
<th scope='col' class='col-2'>Job</th>
<th scope='col'>Type</th>
<th scope='col' class='col-2'>Order #</th>
<th scope='col' class='col-2'>Reference</th>
<th scope='col'>Pallets</th>
<th scope='col'>Weight (kg)</th>
<th scope='col' class='col-2'>Status</th>
</tr>
</thead>
<?php foreach($value as $row){
$jobName = $row['jobName'];
$jobType = $row['jobType'];
$orderNumber = $row['orderNumber'];
$referenceNumber = $row['referenceNumber'];
$pallets = $row['pallets'];
$jobWeight = $row['jobWeight'];
$jobStatus = $row['jobStatus'];
}?>
<tr>
<th>{$jobName}</th>
<td>{$jobType}</td>
<td>{$orderNumber}</td>
<td>{$referenceNumber}</td>
<td>{$pallets}</td>
<td>{$jobWeight}</td>
<td>{$jobStatus}</td>
</tr>
<?php } ?>
</table>
</div>
</div>
</div>
</div>";
}
}
推荐阅读
- powerapps - 过滤 Powerapps 列表
- spring-cloud-gateway - Spring Cloud Gateway:在路径中使用查询参数值?
- javascript - 如何修复 nginx 上的 http 414 Request-URI Too Large 错误?
- python - pandas 第二列中值的条件计数?
- java - 批量插入需要非常长的时间
- c# - Microsoft Azure B2C - 获取配置文件信息
- javascript - 如何在查看我的网站之前查看某人正在查看的内容
- mysql - 来自 MySQL 和 SQL Server 的数据
- java - 具有整数输入验证和正确猜测答案数量的猜谜游戏显示 Java
- python - 在 Tensorflow Keras 中使用空 ImageDataGenerator 时准确度显着降低