Что нужно исправить в этом коде php mysql?

Как можно улучшить структуру и читаемость кода, отображающего таблицу с классами и предметами, чтобы он работал более эффективно?
  • 14 апреля 2024 г. 9:39
Ответы на вопрос 1
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();
?>
```
Похожие вопросы