Вывод данных из базы в select

Рейтинг: 0Ответов: 1Опубликовано: 01.05.2023

Абсолютный новичок. Изучение менее недели по необходимости. на phpmyadmin Бд teachers в ней графы id и name. В select нужно вывести весь список . Пробовал разными методами не получается. Последнее, что пробовал было следующее. Однако выдает ошибку с include(DB.php): failed to open stream: No such file or directory. Понимаю, что ошибка связанная с путем , но я честно не понимаю, что подключать в силу своего не знания

<?php 
    include "DB.php";
    $sql = mysqli_query ($db, "SELECT * FROM teachers");
    echo '<select name="select-teacher" id="teacher">';
    while ($result = mysqli_fetch_array($sql)){
    echo ' <option value="'.$result['name'].'"></option>';
    }
    echo '</select>';
    ?>

Ответы

▲ 0

Наскільки зрозуміла прозьба, вот код, який використовує PDO а не mysqli_query що є кращим варіантом звязку з базою! Можна закинути в інший файл підключення до БД а в поотрібному підєнати через include_once(db.php)

<?php
    const DB_HOST = 'localhost';
    const DB_NAME = 'teachers';
    const DB_USER = 'root';
    const DB_PASS = '';

    function dbInstance() : PDO{
        static $db;
        
        if($db === null){
            $db = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS, [
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
            ]);
            $db->exec('SET NAMES UTF8');
        }
        
        return $db;
    }

    function dbQuery(string $sql, array $params = []) : PDOStatement{
        $db = dbInstance();
        $query = $db->prepare($sql);
        $query->execute($params);
        dbCheckError($query);
        
        return $query;
    }

    function dbCheckError(PDOStatement $query) : bool{
        $errInfo = $query->errorInfo();

        if($errInfo[0] !== PDO::ERR_NONE){
            echo $errInfo[2];
            exit();
        }

        return true;
    }

    function getAllTeachers() : array{
        $sql = "SELECT * FROM teachers ORDER BY dt_add DESC";
        $query = dbQuery($sql);
        return $query->fetchAll();
    }

    $teachers = getAllTeachers();
?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Teachers</title>
</head>
<body>
    
    <select name="teachers">
        <?php foreach ($teachers as $teacher): ?>
        <option value="<?=$teacher['id']?>"><?=$teacher['name']?></option>
        <?php endforeach ?>
    </select>

</body>
</html>