PDA

View Full Version : بهترین روش برای اضافه کردن تصاویر برای یک محصول



xsbehx
دوشنبه 08 تیر 1394, 00:27 صبح
سلام
من یک سایتی دارم طراحی می کنم که قراره داخل یکسری از افراد بتونن محصول اضافه کنند و با تایید مدیر اونها داخل سایت نمایش داده بشه.
حالا این محصول یکسری پارامتر ورودی مثل نام و ... داره که باید وارد بشه و البته تصویر. این محصول می تونه از 1 تا 5 تصویر رو داشته باشه
من دوتا جدول دارم. یکی جدول مربوط به تصاویر و یکی مربوط به محصولات
کلید اصلی جدول محصولات رو هم داخل جدول تصاویر گذاشتم تا یک رابطه 1 به n داشته باشم
هر محصولی می تونه 1 تا 5 تا تصویر هم داشته باشه. پس هر تصویری که می خواد ذخیره بشه باید کلید اصلی اون محصول مورد نظر رو هم داشته باشه تا بعدا بشه فهمید که این تصویر برای کدوم محصوله
با همه این توصیفات اگر بریم سراغ asp :
من همه فیلدهای مورد نیاز مثل نام و ... داخل یک صفحه می زارم تا کاربر اونارو پر کنه. همینطور 5 تا fileupload که کاربر همزمان همراه فیلدها، تصاویر رو هم تو همون صفحه انتخاب می کنه و بعد ثبت محصول رو می زنه و محصول با تصاویرش ثبت می شن
حالت دومش اینه که همه فیلدهای مورد نیاز مثل نام و ... مثل حالت قبل باشند. و به جای 5 تا، یک fileupload و البته یک دکمه "ثبت تصویر" داشته باشیم.که اگر کاربر تصویری رو انتخاب کرد بعدش دکمه "ثبت تصویر" رو که زد، تصویر اولی ذخیره بشه و اونجا بگه که یک تصویر ذخیره شد اگر می خوای تصویر بعدی رو انتخاب کن و آپلود کن و الی آخر

حالا مشکل روش اول اینه که 5 تا fileupload فکر می کنم کار ضایعی باشه. یعنی اگر فردا مدیر سایت از من خواست که محدودیت 5 تا تصویر رو بکنم 10 تا یا اصلا کلا برش دارم، دیگه نمی تونم از این روش استفاده کنم
مشکل روش دوم اینه که اگر من تو حالت اول 4 تا تصویر اضافه کنم و بعد دکمه انصراف رو بزنم یا برق بره یا کلا به هر دلیلی محصول ثبت نشه، اون چهارتا تصویر آپلود شده و الکی فضا می گیره و قابل استفاده هم نخواهد بود. نه برای کاربر نه برای مدیر. چون جایی نیست که مدیر یا کاربر بتونه از رو هاست تصویری رو انتخاب کنه. و این یعنی تصاویری که آپلود شده ولی استفاده نمی شه

مشکل جفت روش هم اینه که من هنوز وقتی محصولی اضافه نکردم وکلید اصلی اون هم identity هست، چطوری باید بیام به تصاویرم بگم که شما مربوط به اون محصولی هستید که هنوز معلوم نیست ID اون چی هست؟
مگر این که بیایم اون identity رو ازش بگیریم وخودم بهش کلید بدم و البته اون موقع سوال پیش می یاد که کلید این طور جداول بهتره چطوری ساخته بشه؟


روش سوم اینه من یک رابطه n به n داشته باشم. یعنی یک جدول واسط هم بین اون دو جدول بزارم. حالا کاری کنم که همه کاربران یک بخش داشته باشند برای اپلود کردن تصاویرشون. و بعد اون تصاویر رو یکبار تو اون مخزن آپلود کنند . و موقعی که می خوان محصولی اضافه کنند از اون لیست تصاویری که قبلا تو صفحه مخصوص "اپلود تصاویر" اضافه کردند، انتخاب کنند نه اینکه مثل دو روش قبل هر بار تصاویری رو آپلود کنن. و البته در انتها ثبت محصول

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

مطمئنا روش های دیگه هم وجود داره که من علاوه بر مشکل زدایی روش های بالا خیلی دوست دارم که از شما یاد بگیرم و باهاشون آشنا بشم.
ضمن این که این فایل آپلودر asp خیلی داغونه و می خوام بدونم کسی چیزه درست و حسابی داره یا نه؟
مثلا مدت زمان آپلود فایل رو نمی تونم باهاش نشون بدم(روش پیشنهادی؟)
خودم که هر کاری کردم نشد با AJAX تصاویر رو ذخیره کنم
file uploader ها دیگه هم بودن مثل jquery file upload که داکیومنتش یکم شلوغ که بیخیالش شدم
اگر چیزه خاصی هم سراغ دارید خوشحال می شم.
در کل خیلی دوست دارم بدونم شما و دیگر سایت های حرفه ای از چه ابزار و چه روشی استفاده می کنند

crazy_1892
سه شنبه 09 تیر 1394, 11:06 صبح
دوست عزیر سعی کن خلاصه بنویسی که دوستان حوصله خوندن داشته باشن

xsbehx
سه شنبه 09 تیر 1394, 15:57 عصر
خلاصه اش می شه این :
اگر برای یک محصولی قراره باشه چندین تصویر اپلود کنید از چه روشی استفاده می کنید؟
استفاده از چندین فایل آپلود (برای هر تصویر یکی)
استفاده از یک فایل اپلود و قرار دادن یک دکمه برای اپلود تصویر اول. و برای اپلود تصویر بعدی دوباره استفاده از همون فایل اپلود برای تصویر دوم و ثبت تصویر دوم و ...

تصاویری که اپلود شده و هنوز محصولی براشون اضافه نشده، اگر به هر دلیلی محصول اضافه نشه، تکلیف تصاویر اپلود شده چی می شه؟
فایل اپلودر موجود رو می شه تغییر داد و ظاهرش رو عوض کرد؟
شما برای اپلود از چی استفاده می کنید؟

keiv@n
سه شنبه 09 تیر 1394, 18:53 عصر
خلاصه اش می شه این :
اگر برای یک محصولی قراره باشه چندین تصویر اپلود کنید از چه روشی استفاده می کنید؟
استفاده از چندین فایل آپلود (برای هر تصویر یکی)
استفاده از یک فایل اپلود و قرار دادن یک دکمه برای اپلود تصویر اول. و برای اپلود تصویر بعدی دوباره استفاده از همون فایل اپلود برای تصویر دوم و ثبت تصویر دوم و ...

تصاویری که اپلود شده و هنوز محصولی براشون اضافه نشده، اگر به هر دلیلی محصول اضافه نشه، تکلیف تصاویر اپلود شده چی می شه؟
فایل اپلودر موجود رو می شه تغییر داد و ظاهرش رو عوض کرد؟
شما برای اپلود از چی استفاده می کنید؟
1- multiple
2-اگر محصول اضافه شد آنگاه تصویر محصول ذخیره شود در غیر اینصورت تصویر محصول اضافه نشود ، لازم نیست نه src تصویر در بانک ذخیره شود نه خود تصویر در بانک ذخیره شود کلا تصویر تو بانک ذخیره نشه ! کاربر تصویر به پروژه اضافه میکنه اسم تصویرو بگیر آیدی رکورد محصول دات jpg هر جا خواسی تصویرو نشون بدی کافیه آیدی تصویرو بخونی یه دات jpg بهش اضافه کنی !
3-آره میشه ، فایل اپلودر دات visible برابر false ، یه باتن زیبا میزاریم کنار فایل آپلودر onclick برابر رخداد کلیک فایل آپلود
http://jsfiddle.net/DSARd/1/

mbasirati
سه شنبه 09 تیر 1394, 22:03 عصر
مشکل جفت روش هم اینه که من هنوز وقتی محصولی اضافه نکردم وکلید اصلی اون هم identity هست، چطوری باید بیام به تصاویرم بگم که شما مربوط به اون محصولی هستید که هنوز معلوم نیست ID اون چی هست؟



Insert into .....
select @@IDENTITY

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






استفاده از چندین فایل آپلود (برای هر تصویر یکی)


میتونی از یک فایل آپلود استفاده کنی و AllowMultiple رو true کنی. اینجوری میشه با یه فایل آپلود چندتا تصویر آپلود کرد و محدودیتش رو هم توی کد کنترل کرد.



فایل اپلودر موجود رو می شه تغییر داد و ظاهرش رو عوض کرد؟


بله میشه. میتونی با html,css یه دکمه قشنگ درست کنی و بعد فایل آپلودت رو بندازی روی این دکمه و opacity اون رو با سی اس اس 0 کنی. اینم یه مثال ساده:
https://jsfiddle.net/panep2Lt/