I'm trying to figure out how to list COMPANY 's CATEGORY 's and BRAND 's, where the layout would look similar to this:
COMPANY 1
CATEGORY 1:
BRAND X BRAND Y BRAND ZCATEGORY 2
BRAND A BRAND B BRAND CCATEGORY 3
BRAND A B开发者_如何学运维RAND X
I'm not familiar enough with PHP + MySQL to find the right SEARCH and PHP output in order to achieve this.
My table looks similar to this:
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
<?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> </li>';
}
echo '</ul>';
}
}
jsbin
Just Fetch everything and put it in a hash in php, something along the line of
$rs = mysql_query("Select * from myTable");
$results = array();
while($row = mysql_fetch_assoc($rs)) {
$results[$row['COMPANY']][$row['CATEGORY']][] = $row['BRAND'];
}
$results
would contain data structure like
array(
'Company 1' => array(
'Category 1' => array('Brand X', 'Brand Y')
... etc
)
try var_dump($results)
to make more sense out of it
精彩评论