2014-02-21 5 views
0

У меня есть таблица, содержащая следующие записи:Сортировать товары по категории

product_id | title | category 
------------------------------------ 
1   | apple | mobile 
2   | android | mobile 
3   | dell | desktop 
4   | hp  | desktop 

и следующий запрос:

$sql = "SELECT product_id, title, category FROM products ORDER BY category"; 
$stmt = $db->prepare($sql); 
$stmt->execute(); 
    while($results = $stmt->fetch(PDO::FETCH_ASSOC)) 
{ 
echo $results["product_id"]; 
echo $results["title"]; 
echo $results["category"]; 
} 

Вопрос заключается в том, чтобы разделить результаты и отображать все записи в списке сортировать по категориям, как показано ниже:

  • Mobile
  • компании Apple
  • Android

Desktop

  • Dell
  • HP
+1

Вы спрашиваете, как выполнить сортировку или выход? –

+0

@NiettheDarkAbsol выход –

+0

вот так? 'SELECT product_id, title, category FROM products ORDER BY category' – DrCopyPaste

ответ

1

Gro вверх ваши записи после получения результирующего набора:

$products = array(); 

while ($results = $stmt->fetch(PDO::FETCH_ASSOC)) 
{ 
    $products[$results['category']][] = array(
     'product_id' => $results['product_id'], 
     'title'  => $results['title'] 
    ); 
} 

foreach ($products as $category => $productList) 
{ 
    echo $category . '<br>'; 

    foreach ($productList as $product) 
    { 
     echo $product['title'] . '<br>'; 
    } 

    echo '<hr />'; 
} 
+0

отлично! благодаря! –

0

После сортировки ваших вещей (ORDER BY category, title), сделать что-то вроде этого:

$last_category = ""; 
while(/* get a row here */) { 
    if($last_category != $row['category']) { 
     if($last_category != "") echo "</ul>"; 
     echo "<ul>"; 
     $last_category = $row['category']; 
    } 
    echo "<li>".$row['title']."<li>"; 
} 
if($last_category != "") echo "</ul>"; 
0

SELECT * FROM продуктов ORDER BY категории. Это для сортировки с использованием категории, ваш выходной файл вывода выглядит другим, что вы пытаетесь сделать?

Смежные вопросы