问题描述
我尝试在一张表中循环 2 个查询。两个查询都有 10 条记录。所以我把我的第一个 foreach(或循环)放在 TR 标签之前..
这是我要创建的表的示例:
.table,th,td { border: 1px solid}
<table>
<thead>
<tr>
<th colspan=2><center>Out Of Stock</center></th>
<th colspan=2><center>Sales By Qty</center></th>
</tr>
</thead>
<tbody>
<tr>
<td>Data 1 from 1st Query</td>
<td>Data 1 from 1st Query</td>
<td>Data 1 from 2nd Query</td>
<td>Data 1 from 2nd Query</td>
</tr>
<tr>
<td>Data 2 from 1st Query</td>
<td>Data 2 from 1st Query</td>
<td>Data 2 from 2nd Query</td>
<td>Data 2 from 2nd Query</td>
</tr>
<tr>
<td>Data 3 from 1st Query</td>
<td>Data 3 from 1st Query</td>
<td>Data 3 from 2nd Query</td>
<td>Data 3 from 2nd Query</td>
</tr>
<tr>
<td>Data 4 from 1st Query</td>
<td>Data 4 from 1st Query</td>
<td>Data 4 from 2nd Query</td>
<td>Data 4 from 2nd Query</td>
</tr>
</tbody>
</table>
我不知道如何使用数据库中的数据制作这样的表格..
所以我尝试将第一个 Foreach 放在 TR 标签中,并在 /TR tg 之后关闭它。所以我们可以看到 TR /TR 中有 4 个 TD /TD 。所以我把第二个 foreach 放在 4 TD /TD 之间。
就像这样:
<table>
<thead>
<tr>
<th colspan=2><center>Out Of Stock</center></th>
<th colspan=2><center>Sales By Qty</center></th>
</tr>
</thead>
<tbody>
<?PHP foreach($First_Data as $row){?>
<tr>
<td>Data 1 from 1st Query</td>
<td>Data 1 from 1st Query</td>
<?PHP foreach($Second_data as $row){?>
<td>Data 1 from 2nd Query</td>
<td>Data 1 from 2nd Query</td>
<?PHP }?>
</tr>
<?PHP }?>
</tbody>
</table>
结果并不完美,我猜我的 foreach 出现在错误的位置。
在这里你可以看到我尝试的结果:
<!DOCTYPE html>
<html>
<head>
<style>
#customers {
font-family: Arial,Helvetica,sans-serif;
border-collapse: collapse;
width: 100%;
}
#customers td,#customers th {
border: 1px solid #ddd;
padding: 5px;
}
#customers tr:nth-child(even){background-color: #f2f2f2;}
#customers tr:hover {background-color: #ddd;}
#customers th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
background-color: orange;
color: white;
}
</style>
</head>
<body>
<table id="customers" >
<thead>
<tr>
<th colspan=2><center>Out Of Stock</center></th>
<th colspan=2><center>Sales By Qty</center></th>
</tr>
</thead>
<tbody>
<tr>
<td>CIMORY YD STRAW 70 ML BANDED 4</td>
<td>89%</td>
<tr>
<td>CIMORY YD STRAWBERY MANGGO LF</td>
<td>88%</td>
<tr>
<td>CIMORY YD BLUEBerry 250 ML</td>
<td>85%</td>
<tr>
<td>CIMORY YD MIXED BERRIES 250 ML</td>
<td>85%</td>
<tr>
<td>CIMORY YD BLUEBerry 70 ML BND4</td>
<td>84%</td>
<tr>
<td>CIMORY YD MIXED 70 ML BANDED 4</td>
<td>84%</td>
<tr>
<td>YOLITE C+100 ORANGE </td>
<td>84%</td>
<tr>
<td>YOLITE C+100 ORIGINAL</td>
<td>84%</td>
<tr>
<td>CIMORY YD BANANA LF</td>
<td>83%</td>
<tr style="background-color: yellow;">
<td>CIMORY YD PLAIN 250 ML</td>
<td>82%</td>
<td>YD-004</td>
<td>390</td>
</tr>
<td>YD-005</td>
<td>363</td>
</tr>
<td>YD-006</td>
<td>248</td>
</tr>
<td>YD-002</td>
<td>240</td>
</tr>
<td>YD-008</td>
<td>153</td>
</tr>
<td>YD-069</td>
<td>137</td>
</tr>
<td>YD-072</td>
<td>132</td>
</tr>
<td>YD-015</td>
<td>111</td>
</tr>
<td>YD-010</td>
<td>111</td>
</tr>
<td>YD-001</td>
<td>72</td>
</tr>
</tbody>
</table>
</body>
</html>
只有一行(黄色背景)是正确的,其他不正确。我不知道为什么。也许我的 foreach 不正确,或者我把它放在了错误的地方。
这里是我想要实现但我不知道如何实现的:
<html>
<head>
<style>
#customers {
font-family: Arial,sans-serif;
border-collapse: collapse;
width: 100%;
}
#customers td,#customers th {
border: 1px solid #ddd;
padding: 5px;
}
#customers tr:nth-child(even){background-color: #f2f2f2;}
#customers tr:hover {background-color: #ddd;}
#customers th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
background-color: orange;
color: white;
}
</style>
</head>
<body>
<table id="customers" style="width: 80%" >
<thead>
<tr>
<th colspan=2><center>Out Of Stock</center></th>
<th colspan=2><center>Sales By Qty</center></th>
</tr>
</thead>
<tbody>
<tr>
<td>CIMORY YD STRAW 70 ML BANDED 4</td>
<td>89%</td>
<td>YD-005</td>
<td>363</td>
</tr>
<tr>
<td>CIMORY YD STRAWBERY MANGGO LF</td>
<td>88%</td>
<td>YD-006</td>
<td>248</td>
</tr>
<tr>
<td>CIMORY YD BLUEBerry 250 ML</td>
<td>85%</td>
<td>YD-002</td>
<td>240</td>
</tr>
<tr>
<td>CIMORY YD MIXED BERRIES 250 ML</td>
<td>85%</td>
<td>YD-008</td>
<td>153</td>
</tr>
<tr>
<td>CIMORY YD BLUEBerry 70 ML BND4</td>
<td>84%</td>
<td>YD-069</td>
<td>137</td>
</tr>
<tr>
<td>CIMORY YD MIXED 70 ML BANDED 4</td>
<td>84%</td>
<td>YD-072</td>
<td>132</td>
</tr>
<tr>
<td>YOLITE C+100 ORANGE </td>
<td>84%</td>
<td>YD-015</td>
<td>111</td>
</tr>
<tr>
<td>YOLITE C+100 ORIGINAL</td>
<td>84%</td>
<td>YD-010</td>
<td>111</td>
</tr>
<tr>
<td>CIMORY YD BANANA LF</td>
<td>83%</td>
<td>YD-001</td>
<td>72</td>
<tr>
<td>CIMORY YD PLAIN 250 ML</td>
<td>82%</td>
<td>YD-004</td>
<td>390</td>
</tr>
</tbody>
</table>
</body>
</html>
谁能告诉我怎么做,我会很感激.. 对不起,如果我的英语不是很好,因为它不是我的母语
解决方法
是的,您的逻辑遗漏了一些东西,因为第二个循环在第一个循环中运行,所以您在同一个 TR 中创建了很多 TD。
为了实现你想要的,我建议合并两个数组,然后循环一个数组。
<?php
$merged_array = [];
foreach($First_Data as $key => $row) {
$merged_array[$key] = ['first' => $row];
}
foreach($Second_data as $key => $row) {
$merged_array[$key]['second'] = $row;
}
/// HTML
?>
<tbody>
<?php foreach($merged_array as $key => $data){?>
<tr>
<td><?=$data['first']['yourcolumnname'] ?></td>
<td><?=$data['first']['yourcolumnname2'] ?></td>
<td><?=$data['second']['yourcolumnname'] ?></td>
<td><?=$data['second']['yourcolumnname2'] ?></td>
</tr>
<?php }?>
</tbody>
或者,如果您 100% 确定两个数组之间的键相同,您还可以执行以下更短的版本,而无需合并两个数组:
<tbody>
<?php foreach($First_Data as $key => $row){?>
<tr>
<td><?=$row['yourcolumnname'] ?></td>
<td><?=$row['yourcolumnname2'] ?></td>
<td><?=$Second_data[$key]['yourcolumnname'] ?></td>
<td><?=$Second_data[$key]['yourcolumnname2'] ?></td>
</tr>
<?php }?>
</tbody>