我试图在一列中显示多个行值。我使用由一对多关系组成的 4 个表。我已经用我需要的数据构建了一个查询,我不确定问题是出在这里还是出在 PHP 方面。我已经包含了一些代码,因此您可以了解一下。老实说,我可能需要使用 GROUP BY 或在 while 之后包含一个 foreach 循环以获得我想要的结果。如果有人能指出我正确的方向或指导我找到解决方案,我将不胜感激。
我可以通过使用 GROUP BY category_name 来停止类别重复,但是我遇到了 subCat_name 未显示所有结果的问题。只显示第一行。它应该显示主 category_name 下的所有 subCat_name
目前正在获取这个
Ideas (category_name)
Shop More( subCat_name)
Have a better wardrobe(subCat_description)
但应该是这样的
Ideas (category_name)
Shop More( subCat_name)
Have a better wardrobe(subCat_description)
Build a Blog( subCat_name)
Share Ideas(subCat_description)
Travel to NYC( subCat_name)
Book a holiday(subCat_description)
MySQL 查询
$query = 'SELECT project_users.*, project.project_name, category.category_name, sub_category.subCat_name, sub_category.subCat_description
FROM project_users
JOIN project
ON project.project_id = project_users.project_id
JOIN category
ON category.project_id = project.project_id
JOIN sub_category
ON sub_category.category_id = category.category_id';
PHP
$result = mysqli_query($link, $query);
if($result) {
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo '<!-- category container for tasks-->
<div class="col-lg-4 category">
<section class="panel">
<div class="panel-body">
<header class="to-do-head">';
echo '<h3>' . $row['category_name'] . '</h3>';
echo ' <a class="to-do pull-right"><i class="icon-plus"></i> Add Task</a>';
echo '</header>';
echo '<div class="col-lg-12 task"><!--open task-->';
echo '<div class="panel-body">';
echo '<h4>' . $row['subCat_name'] . '</h4>';
echo '<p>' . $row['subCat_description'] . '</p>';
echo '</div><!--close panel-body-->';
echo '<div class="task-foot">';
echo '<a href=""><i data-original-title="Add Action" class="icon-legal tooltips"></i></a>
<p class="pull-right"><i class="icon-calendar"></i> 16th Jan 2014</p>
</div><!--close task foot-->';
echo '</div><!--close-lg-12 task-->';
echo '</div><!--close panel body-->
</section><!--close panel-->
</div><!--col lg 4 close container for tasks-->';
}//end while
最佳答案
您需要一些基本逻辑来检测类别何时更改,并为此输出适当的 html。例如
$old_cat = null;
while($row = mysqli_fetch_array(...)) {
if ($row['category'] != $old_cat) {
... output category header ...
$old_cat = $row['category'];
}
... output subcategory stuff here ...
}
关于php - 在一列中显示多行 Mysql 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21311792/