2012-06-28 2 views
1

등록 양식이있는 작은 페이지가 있습니다. 사용자는 등록을 원할 때 버튼을 클릭하기 만하면 4 자리 난수가 생성됩니다.4 자리 사용자 이름 - CakePHP

이렇게하려면 다음과 같은 아이디어가 있습니다. 사용자 이름에 대한 양식을 렌더링하고 기본값으로 "Temp"를 정의합니다. 사용자가 "등록"을 클릭하면 "임시"- 사용자가 추가됩니다. 지금은 사용자 테이블을 업데이트하고 다음 MySQL의 문으로 임의의 코드에 사용자 이름을 변경할 수 있습니다 :

'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

첫째, 당신은 더하기 기호를 사용하고 있습니다.

모델에서 isUnique 유효성 검사를 사용할 수 있도록 Cake에서 사용자 이름을 생성해야합니다. 이전의 모든 사용자 이름에 대한 큰 하위 쿼리가 필요하면 MySQL에서 확인하십시오.

데이터베이스에 삽입하기 전에 사용자 이름을 생성해야합니다. 이렇게하면 돌아가서 행을 편집하지 않아도되고, 이는 매우 이상한 방법입니다.

1

대신 임시 사용자를 생성 한 후 사용자 이름 필드에 AUTO_INCREMENT를 사용하여 테이블에서 당신이 할 수 사용자 이름을 변경하는 수동으로 첫 번째 사용자를 작성하고 그런 다음에 필요가 없습니다 1000

에이 이름의 설정 사용자 이름을 알아 낸다. 그러나 그 이후에 생성 한 사용자는 사용자 이름 1001, 1002, 1003 등을 갖게된다.

이 접근법은 일종의 정통이다.