اسم المستخدم المكون من 4 أرقام - CakePHP

حصلت على صفحة صغيرة مع استمارة التسجيل. عندما يرغب المستخدمون بالتسجيل ، سيكون عليهم فقط النقر على زر وسيتم إنشاء رقم عشوائي مكون من أربعة أرقام.

للقيام بذلك ، حصلت على الفكرة التالية. سأقدم نموذجًا لاسم المستخدم ونحدد "Temp" كقيمة افتراضية. إذا قام المستخدم بالنقر فوق "تسجيل" سيتم إضافة "Temp" -User. الآن سوف أقوم بتحديث جدول المستخدمين وقمت بتغيير اسم المستخدم إلى كود عشوائي باستخدام عبارة 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
أنت لا ترغب في أكثر من 8999 مستخدم ...؟
وأضاف المؤلف deceze, مصدر
شكرا لك على التلميح =) لكنه لم يحل المشكلة.
وأضاف المؤلف Chronnie, مصدر
قضية متعددة اللغات. في PHP لمحاولة تسلسل. بدلا من +
وأضاف المؤلف Kinjal Dixit, مصدر

2 إجابة

بادئ ذي بدء ، أنت تستخدم علامات زائد حيث يجب أن تستخدم نقاط التوقف الكاملة لسَلسَلة المتغيرات والسلاسل.

يجب أن تولد اسم المستخدم في كعكة، وبهذه الطريقة يمكنك استخدام <�كود> isUnique </القانون> التحقق من الصحة في نموذج، إذا كنت تريد أن تفعل ذلك في الخلية قد تحتاج استعلام فرعي كبير من جميع أسماء المستخدمين السابقة.

يجب عليك أيضًا إنشاء اسم المستخدم قبل إدخاله في قاعدة البيانات ، وهذا من شأنه أن يمنعك من العودة وتحرير هذا الصف ، والذي يبدو طريقة غريبة جدًا للقيام بالأشياء.

3
وأضاف

بدلاً من إنشاء مستخدم مؤقت ثم تغيير اسم المستخدم الذي يمكنك تنفيذه في الجدول ، يمكنك تمكين AUTO_INCREMENT على حقل اسم المستخدم ، وإنشاء المستخدم الأول يدويًا وتعيين اسم المستخدم الخاص به على 1000.

لن تحتاج بعد ذلك إلى معرفة اسم المستخدم ولكن أي مستخدم تنشئه بعد ذلك سيكون له اسم المستخدم 1001 و 1002 و 1003 ... إلخ.

هذا النهج هو نوع من غير تقليدية على الرغم من.

1
وأضاف