PHP MySQL отображает несколько строк, сгруппированных по общим полям - PullRequest
1 голос
/ 02 декабря 2010

Я пытаюсь выяснить, как перечислить КАТЕГОРИИ КОМПАНИИ и БРЕНД, где макет будет выглядеть примерно так:

КОМПАНИЯ 1

  • КАТЕГОРИЯ 1:
    БРЕНД X
    БРЕНД Y
    БРЕНД Z

  • КАТЕГОРИЯ 2
    БРЕНД A
    БРЕНД B
    БРЕНД C

  • КАТЕГОРИЯ 3
    БРЕНД A
    БРЕНД X

Я недостаточно знаком с PHP + MySQL, чтобы найти правильный выход SEARCH и PHP для достижения этой цели.

Моя таблица выглядит примерно так:

COMPANY   | CATEGORY   | BRAND    
--------------------------------
Company 1 | Category 2 | Brand A  
Company 1 | Category 2 | Brand B  
Company 1 | Category 2 | Brand C  
Company 1 | Category 1 | Brand X  
Company 1 | Category 1 | Brand Y  
Company 1 | Category 1 | Brand Z  
Company 1 | Category 3 | Brand A  
Company 1 | Category 3 | Brand X  

Ответы [ 2 ]

5 голосов
/ 02 декабря 2010
<?php
$result = mysql_query("
  SELECT
    *
  FROM
    some_table
  ORDER BY
    company,
    category,
    brand
") 
or trigger_error('Query failed in '. __FILE__ .
   ' on line '. __LINE__ .'. '. mysql_error(), E_USER_ERROR);
if (mysql_num_rows($result)) {
  $companies = array();
  while ($row = mysql_fetch_assoc($result)) {
    $companies[$row['company']][$row['category']][] = $row['brand'];
  }

  foreach ($companies AS $company => $categories) {
    echo '<h2>'. htmlentities($company, ENT_COMPAT, 'UTF-8') .'</h2>';
    echo '<ul>';
    foreach ($categories AS $category => $brands) {
      echo '<li>'. htmlentities($category, ENT_COMPAT, 'UTF-8');
      foreach ($brands AS $brand) {
        echo '<br><em>'. htmlentities($brand, ENT_COMPAT, 'UTF-8') .'</em>';
      }
      echo '<br>&nbsp;</li>';
    }
    echo '</ul>';
  }
}

jsbin

0 голосов
/ 02 декабря 2010

Просто извлеките все и поместите в хеш в php, что-то вроде

$rs = mysql_query("Select * from myTable");
$results = array();
while($row = mysql_fetch_assoc($rs)) {
    $results[$row['COMPANY']][$row['CATEGORY']][] = $row['BRAND'];
}

$results будет содержать структуру данных, такую ​​как

array(
    'Company 1' => array(
        'Category 1' => array('Brand X', 'Brand Y')
... etc
)

попробуйте var_dump($results), чтобы получить от этого больше смысла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...