php - 如何选择并显示按相同产品名称排序的数组中的产品

标签 php mysql

我有一个名为产品的数据库表,这是相关的部分:

id, company_id, product_name, product_version

产品可以有重复的名称,但 ID 和版本不同。这是一个示例(虚构的东西)条目:

 1, 24, Kool, default version
 2, 24, Kool, mega edition
 3, 24, Kool, pink edition
 4, 24, Kool, limited edition
 5, 24, Something, default version
 6, 24, Something, v2
 7, 24, Anotherone, default version
 8, 24, Last, default version
 9, 24, Last, special edition
10, 56, Bloop, default version
11, 56, Bloop, second edition

为了获取这些数据,我有以下 php:

$result = mysqli_query($link, "
SELECT p.*
     , c.company_name 
  FROM products p
  JOIN company c
    ON p.company_id = c.id 
 ORDER 
    BY c.company_name
     , p.id
     , p.product_name");

然后我使用以下方式显示它:

$group1 = array();
while ($row1 = mysqli_fetch_assoc($result)) {
$group1[ $row1['company_name'] ][] = $row1;
}

foreach ($group1 as $company_name => $models) {
    echo "$company_name\n"; 
    echo "</br>";

foreach ($models as $model) {
    echo '<div id="product">';
        echo "<a href='index.php?id=$model[id]'>";
        echo "<img src='$product_image_url'>"; // this variable is set earlier.
        echo '</a>';
        echo "<p>$model_name</p>"; // this variable is set earlier.
    echo '</div>';
    }
    echo '<div id="clear"></div>'; // clear float: left before next company.
    }

显示如下:

COMPANY 1
PRODUCT 1, PRODUCT 2, PRODUCT 3

COMPANY 2
PRODUCT 1, PRODUCT 2

但我希望每个产品线(每个公司旗下)只能是共享相同product_name 的产品。

例如,对于公司 ID '24'(下面称为 COMPANY 1)下的所有产品,我希望对任何具有 Product_name = Kool 的项目进行分组,然后数组再次开始处理下一个项目....像这样:

COMPANY 1
Kool, Kool, Kool, Kool
Something, Something
Anotherone
Last, Last

COMPANY 2
Bloop, Bloop
Lunto
Wolli, Wolli

COMPANY 3
and so on...

我一整天都在摆弄代码,但无法弄清楚。我的大脑将不胜感激任何关于该做什么的帮助。

编辑回复Shutterfly:

该代码给了我这个输出:

COMPANY 1
Kool, Kool, Kool, Kool

COMPANY 1
Something, Something

COMPANY 1
Anotherone

COMPANY 1
Last, Last

COMPANY 2
and so on...

我只希望一家公司生产该公司的所有产品。但是由于您的代码,产品的显示方式非常漂亮!该部分有效。

我可以更改什么以使其只有一个公司标题?

最佳答案

这是怎么回事?

while ($row1 = mysqli_fetch_assoc($resource)) {
  $result[ $row1['company_name'] ][ $row1['product_name'] ][] = $row1;
}

foreach ($result as $company_name => $products_group) {
  echo $company_name;
  foreach ($products_group as $group_name => $products) {
    foreach ($products as $product) {
      // do something...
    }

    echo "<br />";
  }

  echo "<br /><br />";
}

关于php - 如何选择并显示按相同产品名称排序的数组中的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24720739/

相关文章:

php - 填充下拉选择列表

MySQL索引计算?

php - 每月创建表

php - 如何通过 codeigniter 中的关键字段更新所有设置字段?

mysql - 如何在 jboss 上建立到 mysql 服务器的只读 xa 数据源连接

php - 命名空间迫使我的类(class)找不到

php - 从检索到的行生成多维数组

php - 使用 php 多页更改 css 类

php - 在 php 和 mysql 中更新/编辑表单字段的最佳实践是什么?

mysql - Spring通过字段 'appUserRepository'表达不满足的依赖关系