Рекурсия. Проблема с возвратом значения из функции

Yura

Новичок
Рекурсия. Проблема с возвратом значения из функции

Если пользователь вводит логин и пароль, то сначала осуществляется проверка, есть ли уже пользователь с таким логином в БД. Если нет, то инфа о пользователе добавляется в таблицу MYSQL. Если есть, то происходит генерирование логина случайным образом. После генерирования я хочу на всякий случай еще раз проверить, нет ли пользователя с таким логином.
Я вызываю функцию check_login, которая должна возвращать после всех этих действий логин. Но, почему-то не возвращает значение. Вот сама функция:

PHP:
function check_login($login)
{
 if ($login!=="") 
       {

         $result = mysql_query("select * from tbl_user where login='".$login."'"); 
         if ($result)
            {
	if (mysql_num_rows($result) == 0) return $login;
  	elseif (mysql_num_rows($result)>0 )
	   {
	        $login = "";
	        $useCharslog .= 'RSTUVWXYZabcdefghkmnpqrstuvwxyz'; 
	        for ($i = 0; $i < 10; $i++ )  
	           {  $login .= $useCharslog[mt_rand (0,strlen($useCharslog)-1)]; } 
			
	        check_login($login);

	   }
		 
              }


}
			 
}
Происходит следующее. Если логина, введенного пользователем, в базе нет, то все работает нормально. Если есть, то генерится новый логин, функция check_login() заново вызывается, в нее передается параметр login, но значение login после того как осуществилась проверка if (mysql_num_rows($result) == 0) не возвратилось, хотя после проверки логин сгенерирован. Мне кажется что задача несложная, скорее всего я где-то туплю. Подскажите, где я не прав.
 

Bitterman

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

Фанат

oncle terrible
Команда форума
Нафига здесь рекурсия, блин?
уже второй на неделе, который не знает, о существовании циклов!
 

Yura

Новичок
Автор оригинала: Фанат
Нафига здесь рекурсия, блин?
уже второй на неделе, который не знает, о существовании циклов!
То ли я туплю, то ли не просто не знаю как в этом случае циклы применить.

-~{}~ 12.04.07 17:36:

Автор оригинала: Bitterman
Честно говоря не понял, зачем тебе все это надо. Чего ты хочешь добиться с помощью своих манипуляций.
Что касается самой функции, то посмотри внимательнее. Для случая, когда логин не найден у тебя есть возврат значения, а для случая, когда он генерится заново - нет.
Добавил возврат значения, но это не решило проблему
 

Yura

Новичок
Автор оригинала: Bitterman
Покажи.
function check_login($login)
{
if ($login!=="")
{

$result = mysql_query("select * from tbl_user where login='".$login."'");
if ($result)
{
if (mysql_num_rows($result) == 0) return $login;
elseif (mysql_num_rows($result)>0 )
{
$login = "";
$useCharslog .= 'RSTUVWXYZabcdefghkmnpqrstuvwxyz';
for ($i = 0; $i < 10; $i++ )
{ $login .= $useCharslog[mt_rand (0,strlen($useCharslog)-1)]; }

check_login($login);
return $login;

}

}


}

}


Сомневаюсь, что я правильно сделал.


А с циклом что-то не соображу, как его тут применить.
 

Bitterman

Новичок
Vallar_ultra
И зачем это было надо делать? Может все-таки было бы лучше, чтоб он сам до этого додумался?
 

Vallar_ultra

Любитель выпить :)
Bitterman
блин, тут наблюдать как каждый такой "программист" сидит и тупит - никакого терпения не хватит. хотя в данном случае я погорячился...

Yura
Курите батенька какой-нить хороший учебник.
 

Yura

Новичок
Спасибо за подсказку. Что-то я сегодня совсем туплю
 
Сверху