gpt4 book ai didi

php - 按组输出 - 也许是foreach?

转载 作者:行者123 更新时间:2023-11-28 23:10:56 25 4
gpt4 key购买 nike

我在一个项目中将来自外部 API 的 JSON 数据放入 MySQL 数据库。这很好用。

使用 GROUPINGORDER BY 的输出并不是我想要的那样

到目前为止我得到了什么:

SELECT *, GROUP_CONCAT(DISTINCT (task))
FROM time_summary
GROUP BY projectName
ORDER BY clientName

表格如下所示:

id      clientName          project             task
1 firm One online banner
2 firm One print folder
3 firm Two water with gas
4 firm One online website
5 firm Two water with gas
6 firm Two water with gas

输出是:

公司
在线
横幅、网站
打印
文件夹

现在问题:分组任务以逗号分隔。

我有一个 while 循环输出 - 但我需要将每个任务放在一个新行中(按项目分组)

公司
在线
横幅
网站
打印
文件夹

PHP代码是这样的:

$new = 1;

$last_client = 'initial';

while($row = _mysql_fetch_array($sql)) {
if($last_client != $row['clientName'] && $last_client != 'initial') {
echo '<div class="cb h20"></div>';
$new = 1;
}

if($new == 1) {
echo '<span class="yellow-small">' . $row["clientName"] . '</span>';
$new = 0;
}
?>
<b><?=$row['projectName'];?></b><br>

<?=$row['GROUP_CONCAT(DISTINCT (task))'];?>
}

我怎样才能做到这一点?

最佳答案

仅将任务聚合到 CSV 中,然后在您的 PHP 代码中再次将它们分开,对我来说这听起来不是一个好的选择。以下简单查询是否不会为您提供所需的数据:

SELECT DISTINCT
clientName,
project,
task
FROM time_summary
ORDER BY
clientName,
project,
task

此查询将为每个客户和项目仅报告不同的任务列表。现在您可以在 PHP 代码中迭代此结果集以生成您想要的输出:

$client = null;
$project = null;

while ($row = _mysql_fetch_array($sql)) {
$curr_client = $row['clientName'];
if ($curr_client != $client) {
echo $curr_client."<br>";
$client = $curr_client;
}

$curr_project = $row['projectName'];
if ($curr_project != $project) {
echo " ".$curr_project."<br>";
$project = $curr_project;
}

echo " ".$row['task']."<br>";
}

输出:

enter image description here

作为免责声明,我专注于获得您想要的显示所需的查询和表示逻辑,而不是 PHP 代码。这可能完全是另一个讨论的主题。

这是一个小型 PHP 演示的链接,它表明演示逻辑是可靠的:

Rextester

关于php - 按组输出 - 也许是foreach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45982749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com