1. Необходимо использовать подготовленные запросы для защиты от SQL-инъекций.
2. Переменные $conn и $result нигде не определены.
3. Необходимо добавить обработку ошибок при выполнении запросов к базе данных.
Для улучшения структуры и читаемости кода можно использовать следующие подходы:
1. Разбить код на отдельные функции для получения данных из базы данных, отображения таблицы и т.д.
2. Использовать шаблонизацию для отображения HTML-кода, например, использовать шаблонизаторы типа Twig.
3. Разделить логику получения данных из базы данных и их отображения для более чистого кода.
4. Использовать классы и объектно-ориентированный подход для работы с данными и их отображения.
Пример улучшенной структуры кода:
```php
<?php
class Table
{
private $db;
public function __construct($db)
{
$this->db = $db;
}
public function getClassesAndSubjects()
{
$query = "SELECT * FROM classes";
$classes = $this->db->query($query);
$results = [];
foreach ($classes as $class) {
$query = "SELECT * FROM subjects WHERE class_id = " . $class['id'];
$subjects = $this->db->query($query);
$results[$class['name']] = $subjects;
}
return $results;
}
public function displayTable()
{
$data = $this->getClassesAndSubjects();
echo '<table>';
foreach ($data as $class => $subjects) {
echo '<tr><td>' . $class . '</td><td>';
foreach ($subjects as $subject) {
echo $subject['name'] . ', ';
}
echo '</td></tr>';
}
echo '</table>';
}
}
// Использование
$db = new PDO("mysql:host=localhost;dbname=yourdb", "username", "password");
$table = new Table($db);
$table->displayTable();
?>
```