Не определяется id редактируемой формы

Есть страница с записями (index.php). Также там есть кнопка, которая переводит на страницу редактирования с формой (update.php). Проблема в том, что при выводе через print_r($row['id]) оказалось, что там несколько форм, которые накладываются друг на друга. И чем больше пользователей, тем, соответственно, больше этих форм. Как мне получить id именно той записи, которую я хочу редактировать? Знаю, что есть метод $_GET['id], только не понимаю как это записать в виде кода

Скриншот вывода print_r

users/index.php:

    <?php
session_start();
if (isset($_SESSION['user'])) {
    require('../layout/header_authed.php');
} else {
    require('../layout/header.php');
}
require($_SERVER['DOCUMENT_ROOT'] . '/controllers/Services.php');
$db = new Services();
?>
<?php
if (isset($_SESSION['user'])) {
    if ($_SESSION['user']->role_id <= 2) { ?>
        <div class="buttons">
            <div class="pages">
                <div class="d-flex">
                    <ul class="data">
                        <li><a class="btn el2" id="add_button" href="/views/services/create.php">Добавить</a></li>
                    </ul>
                </div>
            </div>
        </div>
    <?php } ?>
<?php } ?>
<?php
$data = $db->getService();
foreach ($data as $key => $row) {
    ?>
    <div class="card m-3 shadow" id="cards" style="border-radius: 8px">
        <input name="id" value="<?= $row['id'] ?>" hidden>
        <div class="card-body">
            <h5 class="card-title" style="color: #a7d4fd"><?= $row['name']; ?></h5>
            <div class="m-1">
                <span class="card-subtitle" style="color: #83c4ff">Тип: </span>
                <span class="card-text"><?= $row['type']; ?></span>
            </div>
            <div class="m-1">
                <span class="card-subtitle" style="color: #83c4ff">Стоимость: </span>
                <span class="card-text"><?= $row['price']; ?></span>
            </div>
            <div class="wrapper mt-3">
                <?php
                if (isset($_SESSION['user'])) {
                    if ($_SESSION['user']->role_id <= 2) { ?>
                        <div>
                            <form action="../../views/services/update.php?id=<?= $row['id']?>" method="post">
                                <label>
                                    <button class="btn" type="submit" id="submit">Изменить</button>
                                </label>
                            </form>
                        </div>
                        <div>
                            <form action="../../middleware/service/deleteService.php" method="post">
                                <label>
                                    <input name="id" value="<?php echo $row['id']; ?>" type="text" hidden required>
                                    <button class="btn" type="submit" id="submit"
                                            onclick="return confirm('Вы действительно хотите удалить данного пользователя?');">
                                        Удалить
                                    </button>
                                </label>
                            </form>
                        </div>
                    <?php } ?>
                <?php } ?>
            </div>
        </div>
    </div>
<?php } ?>


users/update.php:

<?php
session_start();
if (isset($_SESSION['user'])) {
    if ($_SESSION['user']->role_id > 1) {
        header('Location:../../index.php');
    }
    require('../../views/layout/header_authed.php');
} else {
    require('../../views/layout/header.php');
}
require($_SERVER['DOCUMENT_ROOT'] . '/controllers/User.php');
$db = new User();
$data = $db->getUser();
foreach ($data as $row) { ?>
    <pre>
        <?php print_r($row['id']) ?>
    </pre>

    <div class="container mt-5" style="display: flex; align-items: start; justify-content: center;">
        <form action="../../middleware/user/updateUser.php"
              method="post"
              class="d-flex flex-column justify-content-center align-items-center mt-3"
              style="background: #2B5477; border-radius: 15px; border: 2px solid #a7d4fd;">
            <input name="id" value="<?= $row['id'] ?>" hidden>
            <h4 style="color:#abd7ff; margin: auto; padding: 25px">Изменение пользователя №<?= $row['id'] ?>: </h4>
            <label class="mb-3" style="color: #abd7ff;">Имя пользователя:
                <input id="type"
                       name="username"
                       type="search"
                       size="25"
                       class="form-control mt-2"
                       placeholder="Логин"
                       value="<?= $row['username'] ?>"
                       pattern="[a-zA-Z0-9]+$" required>
            </label>
            <label class="mb-5" style="color: #abd7ff;">Пароль:
                <input id="type"
                       name="password"
                       type="search"
                       size="25"
                       class="form-control mt-2"
                       placeholder="Пароль"
                       value="<?= $row['password'] ?>"
                       pattern="[a-zA-Z0-9]+$" required>
            </label>
            <p>
                <label for="role">
                    <select id="role" name="role_id"
                            style="border-radius: 8px; height: 40px; width: 206px; text-align: center;">
                        <option value="1">Администратор</option>
                        <option value="2?>">Сотрудник</option>
                        <option value="3">Пользователь</option>
                    </select>
                </label>
            </p>
            <div class="mb-4 mt-3">
                <button class="btn" id="submit" type="submit"
                        onclick="return confirm('Вы действительно хотите изменить данный сервис ? ');">Изменить
                </button>
            </div>
        </form>
    </div>
<?php } ?>


P.S.: Думаю, лучше будет добавить код контроллера User.php, чтобы легче было определить источник проблемы (к тому же, именно там лежит функция getUser().
Вот код:

<?php
require('DB.php');

class User extends DB
{
    public function getUser()
    {
        return $this->DBAll('SELECT users.id, username, password, role_id, role_name from users, roles WHERE (role_id = roles.id) ORDER BY id ');
    }

    public function createUser($request)
    {
        $req = json_decode($request);
        $username = $req->username;
        $password = $req->password;
        $role_id = $req->role_id;
        $connect = $this->connect();
        try {
            $connect->beginTransaction();
            $sql = $connect->prepare('INSERT INTO serving_comp_tech.users (username,password, role_id) values (:username,:password, :role_id)');
            $sql->execute([
                'username' => $username,
                'password' => $password,
                'role_id' => $role_id,
            ]);
            $connect->commit();
            return json_encode([
                'message' => 'Пользователь добавлен'
            ]);
        } catch (PDOException $e) {
            $connect->rollBack();
            return json_encode([
                'message' => $e->getMessage()
            ]);
        }
    }

    public function updateUser($request)
    {
        $req = json_decode($request);
        $id = $req->id;
        $username = $req->username;
        $password = $req->password;
        $role_id = $req->role_id;
        $connect = $this->connect();
        try {
            $connect->beginTransaction();
            $connect->exec("UPDATE users SET username='{$username}', password='{$password}', role_id='{$role_id}' WHERE id='{$id}'");
            $connect->commit();
            return json_encode([
                'message' => 'Пользователь обновлён'
            ]);
        } catch (PDOException $e) {
            $connect->rollBack();
            return json_encode([
                'message' => $e->getMessage()
            ]);
        }
    }

    public function deleteUser($request)
    {
        $req = json_decode($request);
        return $this->transaction('DELETE from users where id=' . $req->id,
            'Пользователь удален');
    }
}

Ответы (1 шт):

Автор решения: wooblydog

Всё дело в том, что ты сам вызываешь все записи из БД вот здесь

foreach ($data as $row) { ?>
<pre>
    <?php print_r($row['id']) ?>
</pre>

Попробуй получить id который тебе нужен для поиска и искать конкретно его.

Например: $id = $_GET['id'] и в цикле уже print_r($row[$id]).

Или просто поменять <?php print_r($row['id'])?> на <?php print_r($row[$_GET['id'])?> .

P.s. если не получится то у обращения к индексу $row попробуй поменять скобки на круглые

P.p.s. А можно вообще когда получаешь инфу из бд брать только нужную тебе запись, так будет оптимальнее всего

$data = $db->whereIn('id', [$_GET['id'])->get();

→ Ссылка