php - 在一列中显示多行 Mysql 和 PHP

标签 php mysql sql

我试图在一列中显示多个行值。我使用由一对多关系组成的 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/

相关文章:

php - 动态调用 PHP 类方法

java - 错误: (dberror) 268 - column ambiguously defined: ROLLNO: line 1 col 7 (at pos 7)

sql - 通过 SQL PARTITION 选择最新项目

php - 添加所有行乘以另一个表中的另一行

php - 在 Laravel 5.1 DB 中重命名列的异常

php - Silverstripe 页面模板保存到数据库问题

php - 如何在mysql数组php中仅显示每种类型的一个结果

sql - 如何获得 SqlCommand ExecuteNonQuery 结果?

PHP 设置套接字超时不起作用?

mysql - 3个强实体集的数据库设计