Nếu bạn muốn nó được thực hiện trong truy vấn MySQL, nó thực sự là rắc rối hơn đáng giá. Đối với một, cú pháp thực sự phức tạp (như tôi nhớ lại) để có một tên nhóm được liệt kê ở đầu mỗi nhóm. Và kết quả vẫn được coi là hàng, vì vậy tên nhóm sẽ được coi như một hàng với tất cả các cột khác là Null, vì vậy bạn sẽ không thực sự tiết kiệm bất kỳ thời gian hoặc công sức nào trong tập lệnh PHP vì nó phải thực hiện câu lệnh if để nắm bắt khi nó chạm vào tên nhóm thay vì dữ liệu nhóm.
Nếu bạn muốn nó được thực hiện bởi vòng lặp while trong PHP, thì Johan đã đi đúng hướng. Tôi sử dụng thông tin sau cho một tình huống tương tự:
$result = $sql->query($query);
$prev_group = "";
while($data = $result->fetch_assoc()){
$curr_group = $data['group'];
if ($curr_group !== $prev_group) {
echo "<h1>$curr_group</h1>";
$prev_group = $curr_group;
}
else {
echo $data;
.....
}
Rõ ràng là dữ liệu tiếng vọng sẽ được thiết lập để lặp lại các phần của dữ liệu theo cách bạn muốn. Tuy nhiên, $ prev_group / $ curr_group được thiết lập để lần duy nhất chúng không khớp là khi bạn ở trong một nhóm mới và do đó bạn muốn in tiêu đề của một số loại.