<?php
// подключение к MySQL
$podkluchenie = new mysqli("localhost", "login", "parol", "bazadannih");
// находим какие классы есть
$zapros = $podkluchenie->query("SELECT DISTINCT klass FROM `date` ORDER BY klass");
// запоминаем их
$date = mysqli_fetch_all($zapros);
// делаем с ними цикл
foreach ($date as $klassdate)
{
$klass = $klassdate[0];
// выводим на экран класс
?><p class="p1"><b><?=$klass?></b></p><?php
// находим какие подклассы есть
$zaprosnew = $podkluchenie->query("SELECT DISTINCT `podklass` FROM `date` WHERE `klass` = '$klass' ORDER BY podklass");
$datenew = mysqli_fetch_all($zaprosnew);
// цикл с подклассами
foreach ($datenew as $podklassdate)
{$podklass = $podklassdate[0];
// выводим на экран подкласс
?><p class="p2"><?= $podklass?></p><?php
// находим какие предметы с нужными классами и подклассами есть
$zaprosesheraz = $podkluchenie->query("SELECT * FROM `date` WHERE `klass` = '$klass' AND `podklass` = '$podklass' ORDER BY name");
$dateesheraz = mysqli_fetch_all($zaprosesheraz);
foreach ($dateesheraz as $namedate)
// выводим на экран имена
{ ?><p class="p3"><?=$namedate[1]?></p><?php
};
};
}
?>
/* добавляем стиль */
<style>
.p1 {color: #FF0000; padding-left: 0px}
.p2 {color: #0000FF; padding-left: 15px}
.p3 {color: #000000; padding-left: 30px}
</style>
create table class (
id int primary key auto_increment,
name varchar(64) unique key
);
create table subclass (
id int primary key auto_increment,
class_id int references class(id),
name varchar(64) unique key
);
create table items (
id int primary key auto_increment,
subclass_id int references subclass(id),
name varchar(64) unique key
);
insert into class (name) values ('Fruits'), ('Vegetables');
insert into subclass (class_id, name) values (1, 'Red'), (1, 'Orange'), (2, 'Green'), (2, 'Yellow');
insert into items (subclass_id, name) values
(1, 'Apple'), (2, 'Pineapple'), (3, 'Cucumber'), (3, 'Carrot');
<?php
$query = 'select class.name class, subclass.name subclass, items.name item
from items
join subclass on items.subclass_id = subclass.id
join class on subclass.class_id = class.id;';
// get DB version using PDO
$stmt = $pdo->prepare($query);
$stmt->execute();
$res = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if (!isset($res[$row["class"]])) {
$res[$row["class"]] = [];
}
if (!isset($res[$row["class"]][$row["subclass"]])) {
$res[$row["class"]][$row["subclass"]] = [];
}
$res[$row["class"]][$row["subclass"]][] = $row["item"];
}
print_r(json_encode($res, JSON_PRETTY_PRINT));