PHP вызывать функцию до тех пор пока не вернет true
У меня есть функция, которая проверят на наличие в бд такого же имени пользователя.
function check_username ($name) {
global $db;
$status = null;
$check = $db->m_query("SELECT `name` FROM `users` WHERE `name` = '$name'");
if ($check->num_rows > 0) {
$status = false;
} else {
$status = true;
}
return $status;
}
Данная функция отрабатывает при нажатий на кнопку. В результате выполняется код, если я получил false, то к текущему имени я добавлю слово "TWO", но как мне вызвать повторно функцию и в параметр передать новую переменную содержащая новое имя $new_username и вызывать до тех пор пока функция не вернет true?
$check_name = check_username($username);
if (!$check_name) {
$new_username = $username."TWO";
}
Ответы (1 шт):
Как-то так получается:
$check_name = check_username($username);
$new_username = $username;
while (!$check_name) {
$new_username .= "TWO";
$check_name = check_username($new_username);
}
Смотрите, чтоб если зарегистрируется 100 людей с ником userTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWOTWO чтоб не были проблемы с базой. Если у вас поле VARCHAR(100) к примеру, база будет обрезать добавленное имя пользователя и может получится так что при проверке будут разные логины, а после добавления в базу - одинаковые.
Потому лучше добавлять рандом - так больше шансов получить короткий логин:
$check_name = check_username($username);
$new_username = $username;
while (!$check_name) {
$new_username .= rand(0, 9);
$check_name = check_username($new_username);
}