【发布时间】:2021-09-30 14:12:14
【问题描述】:
请帮我解决 2 个表的问题:
- tbl_data
- tbl_shipped
tbl_data:
| id_data | nama | category |
|---|---|---|
| 110 | Singkong | Asin |
| 111 | Ubi | Pedas |
| 112 | Pisang | Manis |
| 113 | Bawang | Asin |
| 114 | Tempe | Pedas Manis |
| 115 | Singkong | Pedas |
| 116 | Singkong | Manis |
| 117 | Singkong | Pedas Manis |
| 118 | Ubi | Pedas Manis |
| 119 | Ubi | Asin |
| 120 | Pisang | Pedas |
tbl_shipped:
| id | id_data | date | amount |
|---|---|---|---|
| 1 | 110 | 2021-05-19 | 40 |
| 2 | 111 | 2021-05-21 | 31 |
| 3 | 112 | 2021-05-29 | 80 |
| 4 | 112 | 2021-06-19 | 50 |
| 5 | 112 | 2021-06-22 | 5 |
| 6 | 112 | 2021-07-30 | 23 |
| 7 | 113 | 2021-08-05 | 70 |
| 8 | 113 | 2021-08-13 | 28 |
| 9 | 114 | 2021-09-04 | 8 |
| 10 | 115 | 2021-11-10 | 67 |
| 11 | 115 | 2021-12-20 | 1 |
| 12 | 117 | 2021-05-19 | 12 |
| 13 | 117 | 2021-06-22 | 50 |
| 14 | 117 | 2021-08-05 | 21 |
| 15 | 120 | 2021-09-04 | 71 |
| 16 | 120 | 2021-11-10 | 53 |
预期结果:
| nama | category | 2021-05-19 | 2021-05-21 | 2021-05-29 | 2021-06-19 | 2021-06-22 | 2021-07-30 | 2021-08-05 | 2021-08-13 | 2021-09-04 | 2021-11-10 | 2021-12-20 | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Singkong | Asin | 40 | 40 | ||||||||||
| Ubi | Pedas | 31 | 31 | ||||||||||
| Pisang | Manis | 80 | 50 | 5 | 23 | 158 | |||||||
| Bawang | Asin | 70 | 28 | 98 | |||||||||
| Tempe | Pedas Manis | 8 | 8 | ||||||||||
| Singkong | Pedas | 67 | 1 | 68 | |||||||||
| Singkong | Pedas Manis | 12 | 50 | 21 | 83 | ||||||||
| Pisang | Pedas | 71 | 53 | 60 | |||||||||
| All Total : | 52 | 31 | 80 | 50 | 55 | 23 | 91 | 28 | 15 | 120 | 1 | 546 |
如果预期结果是上图表格中的枢轴,怎么办?
这是我尝试过但不是最佳的代码(来自请求):
<table>
<thead>
<?php include "conn.php";
$result = $connect->query("SELECT * FROM tbl_shipped LEFT JOIN tbl_data ON tbl_data.id_data = tbl_shipped.id_data ORDER BY tbl_shipped.date ASC"); // query-in database
$data = array();
$dates = array();
while ($row = $result->fetch_array()) { // fetching result
if(!isset($data[$row['id_data']][$row['date']])) {
$data[$row['id_data']][$row['date']] = array();
}
if(!in_array($row['date'], $dates)) {
$dates[] = $row['date'];
}
$data[$row['id_data']][$row['date']] = $row['amount'];
}
?>
<tr>
<th></th>
<?php foreach($dates AS $date) : ?>
<th><?=$date?></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php foreach($data AS $id => $entries) : ?>
<tr>
<td><?=$id?></th>
<?php foreach($dates AS $date) : ?>
<td><?=(isset($data[$id][$date])?$data[$id][$date]:'')?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
<tfoot>
</tfoot>
</table>
根据上面的源代码,结果如下:
| 2021-05-19 | 2021-05-21 | 2021-05-29 | 2021-06-19 | 2021-06-22 | 2021-07-30 | 2021-08-05 | 2021-08-13 | 2021-09-04 | 2021-11-10 | 2021-12-20 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 110 | 40 | ||||||||||
| 111 | 31 | ||||||||||
| 112 | 80 | 50 | 5 | 23 | |||||||
| 113 | 70 | 28 | |||||||||
| 114 | 8 | ||||||||||
| 115 | 67 | 1 | |||||||||
| 117 | 12 | 50 | 21 | ||||||||
| 120 | 7 | 53 |
请帮助我。我应该如何编写添加代码,我希望得到预期的结果。谢谢。
【问题讨论】:
-
你有没有尝试过研究这个或自己编写任何代码?我们很乐意帮助这里的人们,但这不是免费的“我的工作”服务。我很确定您不是第一个询问如何转换他们的数据的人......
-
请不要发布图片。我们很乐意提供帮助,但重新创建数据样本的文本形式比重新编写图像上的所有内容要快得多。根据您的图片,您已经拥有 ASCII 表格格式的图片,所以您为什么不直接复制并粘贴 into your question
-
好的,感谢您的意见@ADyson 所以,我的代码仍然在代码应用程序中出错。
-
如果您有一些代码,请与我们分享,并包含一些关于它当前输出的信息,无论是一些错误消息,还是错误的结果或其他什么。这至少会给我们一个起点。如果您在将其包含在您的问题中时遇到问题,那么 a) 阅读 stackoverflow.com/help/formatting 和 b) 确保您包含我刚才提到的足够描述,因为编辑器不喜欢纯代码帖子 - 它试图鼓励您解释您的问题,只需提供代码即可。
标签: php mysql arrays multidimensional-array foreach