嘿,男孩/女孩们,我有一个问题,我目前正在尝试成为MYSQL / PHP的新手。目前,我正在使用Bootstrap手风琴可折叠组件来显示HTML表(即报告)。这是我当前的表格: Current Table in MYSQL。
因此您可以看到reports
行包含一些HTML信息,这些信息是表格。假设每行都是不同的报告,我想获取这些信息并将其显示在网页上。所以我可以这样写:
<div class="accordion" id="accordionExample">
<?php
require('db.php');
$i = 0;
$sql = "SELECT `report` FROM `automation-reports`;";
$query = mysqli_query($connection, $sql);
while($row = mysqli_fetch_assoc($query))
{
foreach($row as $key => $value)
{
?>
<div class="card">
<div class="card-header" id="heading<?php echo $i ?>">
<h5 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse<?php echo $i ?>" aria-expanded="true" aria-controls="collapse<?php echo $i ?>">
Report #1: 8/6/2018
</button>
</h5>
</div>
<div id="collapse<?php echo $i ?>" class="collapse" aria-labelledby="heading<?php echo $i ?>" data-parent="#accordionExample">
<div style="text-align: center;" class="card-body">
<h3 style="float: left;"> Rating-Pull: </h3>
<?php
$i++;
echo $key;
echo "$value";
?>
</div>
</div>
</div>
<?php
}
}
?>
</div>
这很棒,因为它可以完成我想做的事情,这就是我想做的: Display Output
不好的是,我现在意识到在一个手风琴“文件夹”中将有多个报告,这是reportid
行起作用的地方。因此,可以说我运行了我的程序,并在其上运行了两个(不同的)报告,但是我希望它在网页上的“文件夹”中显示。这两个标记都以reportid
中的1
标记。
所以我想做的是遍历reports
,然后,如果它们具有相同的ID,则将它们组合在该文件夹中,并像这样遍历整个表。这就是我尝试使用嵌套循环和SELECT 'report' FROM 'automation-reports' WHERE 'reportid' = '$i' ;
进行此操作的部分,最后我得到了第一个元素。有人可以帮我这个忙,并提供一个很好的解释,以便我可以理解和了解正在发生的事情吗?
谢谢!
编辑: 也许视觉会更好? VISUAL
答案 0 :(得分:1)
我认为您正在寻找GROUP BY
和GROUP_CONCAT
。
SELECT `reportid`, GROUP_CONCAT(`report` SEPARATOR '') as report
FROM `automation-reports`
GROUP BY `reportid`
应该做好这项工作。
答案 1 :(得分:0)
SELECT *
FROM `automation-reports`
GROUP BY `reportid`
将为您提供每个ID的一行,即。
还是要这样显示每一行?
如果是的话,这是一个将报告首先循环组合的可能示例
$sql = "SELECT reportid, GROUP_CONCAT(report SEPARATOR ',') as reports FROM `automation-reports` GROUP BY `reportid`;";
while($row = mysqli_fetch_assoc($query)) {
echo "<div id='{$row['reportid']}'>";
echo $row['reports'];
echo "</div>";
}
我知道这不是您要使用的HTML,但是您应该可以将HTML放入此代码中