Как добавить номер к имени пользователя, если он уже существует - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать систему школьных порталов для моей курсовой работы. У каждого учащегося есть имя пользователя, которое состоит из первой буквы их имени и первых 4 букв их фамилии. Чтобы создать это имя пользователя автоматически, я использую его на странице, где администраторы добавляют студентов.

if (isset($_POST["btnAddUser"])) {
    //preparing statement to protect against sql injections
    $stmt = $conn->prepare("INSERT INTO tbluser (Username, Password, Role) VALUES (?,?,?)");
    $stmt->bind_param("sss", $usernamenew3, $password, $a);
    $password = $_POST["s_password"];
    $password = md5($password);
    $name = $_POST["s_name"];
    $surname = $_POST["s_surname"];
    $dob = $_POST["s_dob"];
    $a = "Admin";
    $usernamenew = substr($name, 0, 1);
    $usernamenew1 = substr($surname, 0, 4);
    $usernamenew3 = $usernamenew.$usernamenew1;

Однако, если, например, введены два студента с одинаковыми фамилиями и одинаковыми начальными буквами их имени, Это приведет к ошибке, поэтому мне нужно добавить 01 при первом использовании имени пользователя, 02 во второй раз и так далее. Пример. Имя = Тест, Фамилия = Студент. В этом примере я хотел бы, чтобы первое имя пользователя с этими буквами было TStud01, а второе - TStud02 ...

1 Ответ

1 голос
/ 11 января 2020

Вам нужно получить количество имен пользователей, начиная с общего шаблона, из базы данных, а затем увеличить его на 1. Затем вы можете заполнить его с помощью 0 и сохранить его в базе данных.

Несколько замечаний:

if (isset($_POST["btnAddUser"])) {
    $password = password_hash($_POST["s_password"], PASSWORD_DEFAULT);
    $name = $_POST["s_name"];
    $surname = $_POST["s_surname"];
    $dob = $_POST["s_dob"];
    $a = "Admin";
    $fistLetter = mb_substr($name, 0, 1);
    $shortSurname = mb_substr($surname, 0, 4);
    $usernamenew = $fistLetter.$shortSurname;

    $searchString = $usernamenew.'%';

    $stmt = $conn->prepare('SELECT COUNT(Username) FROM tbluser WHERE Username LIKE ?');
    $stmt->bind_param('s', $searchString);
    $stmt->execute();
    $countUsername = $stmt->get_result()->fetch_row()[0];

    $usernamenew .= str_pad($countUsername+1, 2, '0', STR_PAD_LEFT);

    //preparing statement to protect against sql injections
    $stmt = $conn->prepare("INSERT INTO tbluser (Username, Password, Role) VALUES (?,?,?)");
    $stmt->bind_param("sss", $usernamenew, $password, $a);
    $stmt->execute();
}

Результаты:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...