За последние 24 часа нас посетили 17684 программиста и 1362 робота. Сейчас ищут 1172 программиста ...

У меня есть сайт на php и там выводятся люди

Тема в разделе "PHP для новичков", создана пользователем Амай, 25 мар 2025 в 13:15.

  1. Амай

    Амай Новичок

    С нами с:
    Вторник
    Сообщения:
    3
    Симпатии:
    0
    Я циклом while вывожу из бд пользователей вывожу их имена фамилии и фотографию обворачиваю их ссылками. Как теперь сделать так чтобы при клике на нужного пользователя который я вывел из бд я попадал на его страницу ведь цикл только выводит информацию как их id получать мне при клике если переменная с id просто в цикле запихнуть в переменную сессии то в сессии будет одна самая последняя переменная с id
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.847
    Симпатии:
    653
    Роутер во фронт-контроллере, спец. роут для адресов вроде /users/1 или на крайняк общий роут для /users и /users/* с ветвлением в контроллере. Соответствующий контроллер и т.п.

    Или взять готовый код. Можно даже взять фронт, который умеет сам разруливать такие вещи, например G-Drive. Ему и контроллер не всегда нужен: https://gency.ru/comment/125 (код для списка можно повесить на отдельную ветку, например /userlist). Также можно использовать контроллер с кодом для списка в таком виде:
    PHP:
    1. <?php
    2.  
    3. if (empty($r1))
    4. {
    5.   $r0['module'] .= 'list';
    6.   // код для списка, причем устанавливать соединение с БД не нужно: используй переменную $link
    7. }
    Шаблон для отдельного юзера нужно будет разместить в users.php, а для списка – в userslist.php.
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.590
    Симпатии:
    1.763
    Из БД можно запросить не только всех пользователей, но и конкретного пользователя:
    Код (Text):
    1.  select * from users where id=1
    Каким-либо способом берёшь переданный ID, например, из get-парметра, из маршрута и т.п., и запрашиваешь нового пользователя. Если ты только учишься, сразу организовать единую точку входа и роутинг будет сложновато (да и потом, всё равно это будет делать какая-нибудь либа/фреймворк, мало кто это пишет самостоятельно). Для начала можно сделать отдельный php-файл
    PHP:
    1. // user.php
    2. $db = mysqli_connect(/* тут твои параметры подключения */);
    3.  
    4. // Для предотвращения SQL-инъекций (вид атаки, когда хакер может снести пол твоей базы, или узнать, что ему не полагается)
    5. // нужно использовать подготовленные операторы
    6. $smt = mysqli_prepare($db, "select * from users where id = ?"); // ? - куда потом подтсавлять данные
    7. mysqli_stmt_bind_param($smt, "i", $_GET["id"]); // Берём из get-параметра
    8.  
    9. $result = mysqli_stmt_get_result($stm);
    10. $user =  mysqli_fetch_array($result, MYSQLI_ASSOC);
    11.  
    12. if (!$user) {
    13.    http_response_code(404);
    14.    die();
    15. }
    16.  
    17. // теперь делаем что-то с юзьверем
    Ну так ты пишешь, пока учишься. Если уже объекты понимаешь, можно PDO взять, с ней поприятнее работать. Потом, скорее всего, перейдёшь к какому-нибудь фреймворку