PDA

View Full Version : سوال: ایجاد شماره اختصاصی برای کاربر



mahdik
چهارشنبه 26 خرداد 1389, 12:39 عصر
سلام وقت بخیر

دوستان عزیز ممنون میشم کمکی کنید در مورد ساخت ID برای هر کاربر به صورتی که وقتی کاربر جدید ادد میکنم به صورت خودکار ID جدید رو در فرم فراخان کنه

مثلا آخرین آیدی ادد شده 245 هست هنگام ادد کردن کاربر بعدی در فرم ثبت نام فیلد شماره کاربر 246 خورده باشه

با تشکر از کمکتون :لبخندساده:

rapidpich
چهارشنبه 26 خرداد 1389, 12:57 عصر
Max(id)

این کوری آخرین Id رو بهت میده

mahdik
پنج شنبه 27 خرداد 1389, 10:54 صبح
با سلام و تشکر از راهنمایتون

دوست عزیز میتونید در مورد مشکل زیر هم کمکی کنید

من دو فیلد ID و UID دارم
ID به صورت اتوماتیک عدد میگیره و مشکلی نیست
کار اصلی من روی UID هست که کار اونم به این صورته که من یه تعداد کاربر قبلی دارم که UID خودشون رو داره که باید در سیستم ادد بشه یوزر های جدید هم باید از ادامه آن UID های قدیمی ID بگیرند .

سوال : حالا من چیکار کنم که UID ها تکراری نخوره و تداخل در کاربران پیش نیاد ؟

با تشکر

ABDOLHAMID(R@iny)
پنج شنبه 27 خرداد 1389, 11:20 صبح
سلام وقت بخیر

دوستان عزیز ممنون میشم کمکی کنید در مورد ساخت ID برای هر کاربر به صورتی که وقتی کاربر جدید ادد میکنم به صورت خودکار ID جدید رو در فرم فراخان کنه

مثلا آخرین آیدی ادد شده 245 هست هنگام ادد کردن کاربر بعدی در فرم ثبت نام فیلد شماره کاربر 246 خورده باشه

با تشکر از کمکتون :لبخندساده:

این کار عقلانی نیست. مگر اینکه قسمت نمایش شماره کاربر رو ajax نمیاش بدی و هی تغییر کنه.
مثلا من اومدم توی صفحه ثبت نام و بنا بر دیتا ای که خونده میگه شما نفر 255 هستی که ثبت نام میکنی. ولی در همون موقع 5 نفر دیگه دارن ثبت نام میکنند. و از من هم زور تر ثبت نامشون تموم میشه بنابر این من میشم نفر 261 و این عددی که به کاربر نشون داده بودی بی فایده بوده!:اشتباه:

mahdik
پنج شنبه 27 خرداد 1389, 11:26 صبح
فراموش کردم بگم که این سیستم فقط یک مدیر داره که این اطلاعات رو وارد میکنه و اون مشکلی که فرمودین پیش نخواهد اومد :چشمک: ممنون از توجهتون

mirmousavi.m
پنج شنبه 27 خرداد 1389, 12:35 عصر
اصلا به این چیزا احتیاج ندارید.
باید فیلد ID رو داخل دیتابیس auto_increment بزارید.

mirmousavi.m
پنج شنبه 27 خرداد 1389, 12:40 عصر
لازم می‌دونم یه مقدار بیشتر توضیح بدم:
auto_increment به این صورت هست که در برنامه‌ه،ا همراه با اطلاعات id جدید ارسال نمیشه به دیتابیس که بعد ذخیره بشه بلکه خودش همین کار رو که شما احتیاج داری رو انجام میده، یعنی آخرین ID رو میگیره و یکی بهش اضافه میکنه بعد در دیتابیس ذخیره میکنه...

mahdik
پنج شنبه 27 خرداد 1389, 13:41 عصر
ممنون از شما

مشکلی که هست ایمه که UID شماره قرارداد کاربره و جدای از ID هست
در اصل من نیاز به دو کد شناسایی از کاربر دارم که هر دو نباید تکراری باشند
تکلیف IDکه مشخصه با روش auto_increment ثبت میشه

ولی آیا میتونم با auto_increment در UID شماره قرارداد رو الگو بدم و مثلا از 10000 شروع بشه ؟

آیا میشه اگه فیلد شماره قرارداد خالی بود به صورت auto_increment از آخرین شماره آزاد در تیبل UID ثبت بشه ؟

با تشکر

pashaie
پنج شنبه 27 خرداد 1389, 14:30 عصر
شما خیلی راحت می تونی یه تریگر درست کنی که کاری که می خوای رو انجام بده.
مثلا اگه اسم جدول شما test باشه، با استفاده از:


CREATE TRIGGER autoUID BEFORE INSERT ON test
FOR EACH ROW
BEGIN
SET NEW.UID = (SELECT MAX(UID) FROM test) + 1;
END
|

هر وقت که داره یه سطر به جدول تست اضافه می شه، مقدار فیلد UID بصورت اتوماتیک یه واحد بیشتر از بزگترین UID جدول می شه.
در ضمن واسه اینکه کد بالا درسا اجرا بشه باید Delimiter رو هم | بزاری
من تو phpmyadmin نحوه ست کردن Delimiter رو تو عکس زیر مشخص کردم
موفق باشی