PDA

نسخه کامل مشاهده نسخه کامل : بدست آوردن id Autoincriment



sarve
06-01-2011, 13:30
برای یک فروشگاه می خوام یک برنامه بنویسم
توی یکی از صفحات تعریف کالاست که نام کالا و عکس کالا رو از کاربر می گیره
مشکلم این جاست که توی بانک تعریف کردم id مربوط به هر کالا بصورت اتوماتیک از طرف mySqlاختصاص پیدا کنه
و می خوام نام کالا رو rename کنم و به همون id مثلا اگه id برای کالایی 50 باشه اسم عکس اون هم 50.jpg بشه
حالا موندم که چطور متوجه بشم که چه عددی رو قراره mySql برای id کالا اختصاص بده

eAmin
06-01-2011, 17:47
می تونید از این تابع استفاده کنید : mysql_insert_id ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

moein_ak
08-01-2011, 07:44
می تونید از این تابع استفاده کنید : mysql_insert_id ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

این تابع فقط بعد از اجرا کردن یک query قابل اجراست و این دوستمون میخواد قبل از اجرای query بدونه آخرین عدد چنده

دوست عزیز من همین مشکلو برای طراحی یه سایت خبری داشتم و میخواستم عکسای تیترو همینجوری اسم گذاری کنم

اینم کدی که لازم داری

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فکر کنم فهمش برات ساده باشه
ولی برای کسایی که شاید خوب نمیفهمن
تو خط اول
ORDER BY id باعث میشه که نتایج پیدا شده ترتیبشون بر اساس آیدی باشه
DESC ترتیب حالت نزولی داره یعنی اولین نتیجه بزرگترین آیدی رو داره(اگه این کلمه رو نذاری به صورت پیش فرض صعودی میشه)
LIMIT 0,1 از اولین نتیجه که(از صفر شروع میشه) به تعداد 1 نتیجه رو برمیگردونه

امیدوارم کمکت کنه

sarve
08-01-2011, 09:02
ممنونم از راهنمایی شما
کدی که شما دادید فقط داره آخرین id که استفاده شده رو بر می گردونه
درسته که می تونیم id جدید رو با اضافه کردن یک عدد به id قبلی بدست بیاریم ولی همیشه هم اینطور نیست
مثلا همونطور که می دونید اگه یک id حذف بشه دیگه بانک از اون id استفاد نمی کنه - پس اگه ما آخرین پارامتر رو از توی بانک حذف کرده باشیم دیگه id جدید با اضافه کردن یک عدد به id قبل بدست نمی یاد*** بنابراین Next Autoindex=! $last_id+1

sarve
08-01-2011, 09:10
به این عکس دقت کنید
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

وقتی رو یکی از جدول هاتون توی یانک کلید می کنید مشخصات اون جدول رو بهتون نمایش می ده
یکی از بخش هایی که داره همین next autoindex هستش حالا می خوام بدونم این رو چطور می تونم توی php استخراجش کنم

eAmin
08-01-2011, 15:45
به این عکس دقت کنید
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

وقتی رو یکی از جدول هاتون توی یانک کلید می کنید مشخصات اون جدول رو بهتون نمایش می ده
یکی از بخش هایی که داره همین next autoindex هستش حالا می خوام بدونم این رو چطور می تونم توی php استخراجش کنم
شما نمی تونید این مشکل رو طور دیگه ای برطرف کنید؟ حالا از هر طریق که بتونید؟ ( منظورم پست اول شما تو این تاپیک هست ).

اگر بخواید id بعدی رو بدست بیارید باید از طریق این کوئری اطلاعات جدول مورد نظرتون رو استخراج کنید، و بعد از اون میتونید مقدای که قرار هست به id بعدی اختصاص داده بشه رو دریافت کنید. مثال:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

neopersia
08-01-2011, 22:10
بهترین راه همون هست که در پست دوم اشاره شد.
بهتره اول مشخصات کالا رو در دیتابیس وارد کنید بعد بلافاصله با تابع mysql_insert_id در php یا از طریق این کوئری:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
id رکورد وارد شده رو به دست بیارید.

پست سوم یک مشکل داره که خودتون اشاره کردید. اگر رکورد آخر جدول حذف شده باشه id بعدی که اختصاص داده میشه بزرگتر از اونی هست که در این روش به دست میاد

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