2012-06-28 4 views
1

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

Для этого я получил следующую идею. Я создам форму для имени пользователя и определяю «Temp» как значение по умолчанию. Если пользователь нажмет «Регистрация», будет добавлен «Temp» -User. Теперь я буду обновлять таблицу пользователей и изменить имя пользователя для случайного кода с помощью следующего туздо высказывания:

'UPDATE `users` SET `username` = FLOOR(1000 + (RAND() 
*8999)) WHERE id = ' + $this->Auth->user('id') + ';' 

Это весь код PHP.

$this->User->query('UPDATE `users` SET `username` = FLOOR(1000 + (RAND() 
*8999)) WHERE id = ' + $this->Auth->user('id') + ';'); 

Но это не работает. Как вы думаете? Какое наилучшее решение для создания автоматически сгенерированного имени пользователя?

Обновления: Спасибо «kinjal»

$this->User->query('UPDATE `users` SET `username` = FLOOR(1000 + (RAND() 
*8999)) WHERE id = '.$this->Auth->user('id').';'); 
+1

многоязычный выпуск. в php для конкатенации попробуйте. вместо + –

+0

Спасибо за подсказку =) Но это не решило проблему. – Chronnie

+1

Вы не желаете больше, чем 8999 пользователей ...? – deceze

ответ

3

Прежде всего, вы используете плюс знаки, где вы должны использовать торможения для конкатенации переменных и строк.

Вы должны сгенерировать имя пользователя в Cake, таким образом, вы можете использовать валидацию isUnique в модели, если вы хотите сделать это в MySQL, вам понадобится большой подзапрос всех предыдущих имен пользователей.

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

1

Вместо того, чтобы создать пользователя временный, а затем изменить имя пользователя вы могли в вашей таблице позволяют AUTO_INCREMENT на поле имени пользователя, создания первого пользователя вручную и установить его имя пользователя 1000.

Вы тогда не придется укажите имя пользователя, но любой пользователь, которого вы создадите после этого, будет иметь имя пользователя 1001, 1002, 1003 .... и т. д.

Этот подход является неортодоксальным.

Смежные вопросы