PDA

View Full Version : مشکل در ذخیره اطلاعات خرید ناکامل در آرایه



setareh2013
پنج شنبه 11 دی 1393, 18:10 عصر
با سلام
من با کد زیر برای کاربران ثبت نام نکرده سژن تعریف کردم
if(session(["IUserIp]==null)
session.add(["UserIp"],IP);
مشکل اینجاست که من وقتی خرید های مشتری که هنوز هزینه اونها رو پرداخت نکرده داخل آرایه می ریزم وقتی از صفحه بیرون بیادو بخواد که چند روز دیگه پرداخت انجام بده اطلاعات آرایه پاک میشه .
باید چه طوری اطلاعات این خریدهای ناکامل رو بدون دیتابیس داخل آرایه ذخیره کنم؟
با تشکر

sadegh.te
پنج شنبه 11 دی 1393, 18:22 عصر
میتونید اطلاعات رو داخل کوکی بریزید و اونارو رمز نگاری کنید.

ahmad156
جمعه 12 دی 1393, 18:03 عصر
چه طوری اطلاعات این خریدهای ناکامل رو بدون دیتابیس داخل آرایه ذخیره کنم؟

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

setareh2013
شنبه 13 دی 1393, 09:47 صبح
مشکل اینجاست که من در این مورد خیلی جستجو کردم . بیشتر میگفتند که اطلاعات خرید که پرداخت اونها انجام نشده باید داخل آرایه ای از سژن ذخیره بشه و اگه پرداخت انجام شد داخل دیتابیس ذخیره کنم . ولی آرایه اطلاعات بروز شده رو نگه نمیداره .

ahmad156
شنبه 13 دی 1393, 16:10 عصر
بله درسته در Session ذخیره میکنن ولی اون هم به مدت محدود و کم. نهایت تا چند ساعت.Session محدودیت های خاص خودش رو داره من جمله منقضی شدن اون یا استفاده از منابع سرور.تازه خیلی وقتها برای جلوگیری از مشکلات Session اون رو توی DataBase ذخیره میکنن.پس بهترین گزینه برای شما ذخیره اطلاعات توی DataBase است

keiv@n
سه شنبه 16 دی 1393, 10:18 صبح
اطلاعات داخل یک session میتونه به مدت 525600 دقیقه یا یک سال نگهداری بشه ... مشکل از محدودیت زمان انقضای session ها نیست..

برای اینکه مدت انقضا شدن session هاتو تغییر بدی فایل وب کانفیگتو اینطوری ویرایش کن :


<system.web>
<sessionState mode="custom"
cookieless="true "
regenerateExpiredSessionId="true "
timeout="43200"
stateNetworkTimeout="30"/>
</system.web>


مقدار timeout رو برابر یک ماه گذاشتم (زمان به دقیقه است)

اگر میشه قسمتی از کدت رو بزار تا بررسی کنیم

ممنون

setareh2013
سه شنبه 16 دی 1393, 14:57 عصر
ممنون از همه شما
ولی مشکل من اینه که نمی تونم اطلاعات خرید کامل نشده رو داخل آرایه ذخیره کنم .

keiv@n
سه شنبه 16 دی 1393, 17:54 عصر
کمتر شرکتی کاری که شما گفتینو انجام میده !

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

هدفتون چیه از این کار؟

mohammad kafiyan
پنج شنبه 18 دی 1393, 23:58 عصر
اکث فروشگاه از cookie استفاده می کنند من تست کردم نمونه digikala را بروید ببینید
از database هم استفاده نمی کنند برای این کار چون فروشگاهی که روزی بین 1000 تا ... هزار درخواست می دانید چه حجم داده ای در خود ذخیره کند و مداوم در اختیار کاربر قرار دهد

setareh2013
چهارشنبه 24 دی 1393, 15:43 عصر
همه شما درست می گید ولی من فقط می خوام بدونم که چه طوری و با چه کدی اطلاعات خرید کامل نشده رو چه به با کوکی و چه با سژن داخل آرایه ای از سژن یا کوکی ذخیره کنم . مشکل اینه .
یعنی کاربر که روی دکمه خرید جنس اول کلیک کرد اون رو داخل یک کوکی یا سژن ذخیره می کنم . اگه روی خرید اجناس دیگه هم کلیک کرد مشکل پیش میاد چون نمی دونم چه طوری آرایه رو در این حالت استفاده کنم .

ghossein
چهارشنبه 24 دی 1393, 17:37 عصر
سلام
می تونم بپرسم چرا از آرایه برای ساخت سبد خرید استفاده می کنید و چرا از دیتا تیبل برای نگه داری اطلاعات سفارش یا خرید استفاده نمی کنید؟
بیشتر کسانی که کلاس سبد خرید رو درست می کنند رو دیدم روال کارشون اینه که اطلاعات در دیتاتیبل نگه می دارند و بعد برای نگه داری اون و استفاده در صفحات بعد در سشن یا کوکی ذخیره می کنند. و در انتها بعد اینکه کار خرید تمام شد اطلاعات خرید در پرو فایل کاربر نگه می دارند تا در خریدهای آتی به عنوان سوابق خرید کاربر ازش استفاده کنند.

برای انتقال Session به DataTable:
DataTable dt = new DataTable();
dt = (DataTable)(HttpContext.Current.Session["Cart"]);


خوب شما می تونی بعد انتقال محتویات سشن به داخل دیتا تیبل ، کارهای که مد نظرتونه رو انجام بدید و در آخر در سشن ذخیره کنید.

برای انتقال DataTable به Session:

HttpContext.Current.Session["Cart"] = dt;

setareh2013
جمعه 26 دی 1393, 19:00 عصر
ممنون از شما . فقط یه کم در درک این کد مشکل دارم . مثلا اگه کاربر "a" روی دکمه خرید سه تا کالا کلیک کرد با این کد چه طوری می تونم سه تا کالا رو داخل دیتاتیبل اضافه کنم ؟ کد زیر درسته ؟
int I=0;
if(click )
dt.rows[0][I]= آی دی کالای خریداری شده .
++i
حالا اگه یک کاربر دیگه هم در همان لحظه وارد شدو خواست خرید کنه باید یک دیتاتیبل دیگه با نام دیگه تعریف کنم ؟

aminmousavi
جمعه 26 دی 1393, 19:16 عصر
سلام دوست عزیز . برای هر کاربر یک session به اسم cart ساخته میشه (session هر کاربر مختص به خودش میشه)

قبلا توی همین تالار من یک نمونه ساده از این روش قرار داده بودم ، میتونین استفاده کنین :
http://barnamenevis.org/showthread.php?463630-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%B3%D8%A8%D8%AF-%DA%A9%D8%A7%D9%84%D8%A7-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%81%D8%B1%D9%88%D8%B4%DA%AF%D8%A7%D9%87-%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86&p=2078257&viewfull=1#post2078257