18910140161

PHP-根据ID-Stack溢出循环数据库内容

顺晟科技

2022-10-19 13:51:26

80

我有一个带有MySQL数据库的azure PHP Web应用程序。

我需要访问数据库中的2个表,并循环访问每个条目,显示连接到每个ID的内容。

数据库设置:

驱动程序

<头>
DriverID Drivername
(AI)1 bob

OpenJobs

<头> jobdate等等等driver_fk
jobid jobname destination drivername_fk
(AI)1 作业1 星期一,9月1日 新西兰 blah blah (从驱动程序获取) (从驱动程序获取)

以下是我的代码: 我在别处也有一个连接。我还没有添加驱动程序名称的联接。

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作为数组键的多维数组。您将有一个数组,如下所示,

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>";
    }
}

,然后循环创建数组。它将为驱动程序创建一个框,并在表体中创建另一个循环,以显示驱动程序的相关作业。

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>";
    }
}
  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航