【发布时间】:2021-10-04 00:03:32
【问题描述】:
我有一个带有 MySQL 数据库的天蓝色 PHP Web 应用程序。
我需要访问数据库中的 2 个表并循环访问每个条目,显示连接到每个 ID 的内容。
数据库设置:
司机
| driverID | driverName |
|---|---|
| (AI) 1 | Bob |
打开工作
| jobID | jobName | jobDate | destination | etc etc etc | driver_FK | driverName_FK |
|---|---|---|---|---|---|---|
| (AI) 1 | job 1 | Monday, 1st Sep | New Zealand | blah blah | (get from driver) | (get from Driver) |
这是我的代码: 我在其他地方也有一个连接。而且我还没有为司机姓名添加连接。
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 号的每个作业,而不是在不同的块中,如下所示:(忽略设计等方面的差异)
我假设我需要在第一个循环中运行第二个循环,但我对第二个循环中的条件感到困惑。
【问题讨论】:
-
我需要在第一个循环中运行第二个循环。 提示:(a) 在第一个循环中查询,选择不同的驱动程序 ID,驱动程序名称。 (b) 在第二个循环中查询:选择与此驱动程序 ID 相关的那些数据。
-
谢谢!这似乎奏效了,因为它为驱动程序添加了多个工作,但它仍然重复相同的驱动程序和工作,具体取决于分配给驱动程序的数量。希望这是有道理的