PDA

View Full Version : گفتگو: پیاده سازی سبد خرید با Session (دانلود کنید)



ezamnejad
پنج شنبه 24 اردیبهشت 1388, 21:56 عصر
سلام
چند روز بود که دنبال یک روش خوب برای ایجاد سبد خرید بودم که اینجا (http://net.tutsplus.com/tutorials/other/build-a-shopping-cart-in-aspnet/)پیدا کردم . در این روش از Session استفاده شده و روش جالب و خوبی به نظر میرسه . پیاده سازی این روش با Generic ها انجام شده و از سه کلاس برای کارهای مختلف استفاده شده . (در آدرس فوق یک نمونه برنامه هم وجود داره که بدون استفاده از دیتابیس نوشته شده است)
یک برنامه نمونه با این روش نوشتم که شامل موارد زیر :

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

در این برنامه تمرکز کار بیشتر بر روی سبد خرید بوده و برای استفاده نهایی باید کدهای بیشتری اضافه کنید .
برای ذخیره اطلاعات در کوکی به جای session ابتدا فایل پست شماره 3 را دانلود کنید سپس کلاس ِ ShoppingCart که در پست شماره 9 قرار داره را دانلود و جایگزین کنید .

raziee
پنج شنبه 24 اردیبهشت 1388, 22:03 عصر
مرسی .
خوب بود آقا

ezamnejad
یک شنبه 27 اردیبهشت 1388, 15:24 عصر
سلام
بعد از بررسی بیشتر برنامه به این نتیجه رسیدم که برنامه کارآیی لازم را ندارد و یک مشکل در برنامه وجود داره .
در این برنامه از الگوی Singleton استفاده شده یعنی فقط یک نمونه از کلاس ایجاد می شود و همه اطلاعات در این نمونه ذخیره می شود در واقع اطلاعات درون session ذخیره نخواهد شد . برای بررسی این موضوع برنامه را در مرورگرهای مختلف مثل FireFox و IE همزمان باز کنید میبینید که اطلاعات کارت هر دو به یک صورت خواهد بود .
نحوه رفع این مشکل در منبع اصلی مقاله هم (پست های آخر) گفته شده که من تغییرات را انجام دادم و دوباره آپلود کردم . تغییراتی در کلاس ShoppingCart اعمال شده و نحوه استفاده از آن درون فرمها اندکی تغییرات دارد .
در ضمن امکان انتخاب چند مورد از کارت (GridView) و حذف همزمان آنها هم اضافه شد .

rahelan
چهارشنبه 30 اردیبهشت 1388, 11:48 صبح
سلام خیلی ممنون بابت برنامه
دانلود کردمش
با برنامه ی Visual Web Developer 2005 Express Edition اجراش کردم
اما یه پیغامی میده که ازش عکس گرفتم و ضمیمه کردم
اگه میشه کمکم کنید که چطور با موفقیت میتونم این برنامه رو تو این نرم افزار اجرا کنم
خیلی ممنونم

rahelan
چهارشنبه 30 اردیبهشت 1388, 16:43 عصر
من نميتونم اين از اين برنامه درست اجرا بگيرم
بانكش ارور ميده

لطفا كمكم كنيد

ezamnejad
پنج شنبه 31 اردیبهشت 1388, 12:11 عصر
سلام
شما باید ایتدا دیتابیس را که توی پوشه database قزار داره attach کنید بعد کانکشن را ست کنید . چون امکان اتصال به بانک وجود نداره این پیغام نمایش داده میشه . sql2000 یا 2005 نصب کنید بعد attach کنید .

rahelan
جمعه 01 خرداد 1388, 20:11 عصر
خيلي ممنون از لطفتون :لبخندساده:
sql2005 نصب دارم رو سيستمم
اما زياد از اين برنامه ها سر در نميارم
اگه طريقه ي attach كردن رو بگيد ممنون ميشم آقاي عظام نژاد

ezamnejad
شنبه 02 خرداد 1388, 14:53 عصر
خيلي ممنون از لطفتون :لبخندساده:
sql2005 نصب دارم رو سيستمم
اما زياد از اين برنامه ها سر در نميارم
اگه طريقه ي attach كردن رو بگيد ممنون ميشم آقاي عظام نژاد

توی management studio روی databases راست کلیک و کنید و گزینه attach را انتخاب کنید کادر attach databases باز میشه که باید بعد از کلیک دکمه add دیتابیس را انتخاب کنید و ok بزنید . عکسها را هم ببینید .
در ضمن لطف کنید عکسی که توی پست شماره 5 قرار دادید را یا اندازه اش را کم کنید یا حذفش کنید چون اندازه بزرگی داره و نظم تاپیک را بهم زده . توی پست شماره 4 هم همون عکس وجود داره .

ezamnejad
یک شنبه 03 خرداد 1388, 12:40 عصر
سلام
با تغییراتی که در کلاس ShoppingCart ایجاد کردم امکان ذخیره اطلاعات در کوکی هم فراهم شد . دوستانی که قبلا دانلود کردند (پست شماره 3) فقط کافیه این فایل را جایگزین کنند . یک کوکی به نام ShoppingCart ایجاد میشه که اطلاعات سبد خرید را نگهداری میکنه .
یک متد جدید به نام RemoveCart برای حذف کوکی اضافه شده در برنامه نمونه و فرم Factor.aspx به جای کد


ShoppingCart.GetShoppingCart().Items.Clear();

از کد زیر استفاده کنید .


ShoppingCart.GetShoppingCart().RemoveCart();

rahelan
دوشنبه 04 خرداد 1388, 04:17 صبح
با سلام مجدد
ممنون از محبتتون
برنامه رو اجرا کردم
اما یه اروری میده که ضمیمه کردم اگه میشه ببینید
اما اگه در این خط:
string strCon = "Data Source=(local);Initial Catalog=ShopTest;integrated security=true";
بجای true از false استفاده بشه برنامه اجرا میشه
اما به این شکل میاد
http://i41.tinypic.com/xblppj.jpg
اطلاعات داخل tabel ها فراخوانی نمیشه مثل اینکه
عکس رو ببینید.
نمیدونم چرا به این شکل میاد.
کمکم کنید که این برنامه رو درست اجرا بگیرم ممنون می شم:قلب:

rahelan
چهارشنبه 06 خرداد 1388, 03:17 صبح
من هر روز چند بار اینجا سر میزنم تا ببینم کسی جوابم رو داده یا نه اما کسی جواب سوالمو نمیده :ناراحت:

iman_22a
چهارشنبه 06 خرداد 1388, 03:48 صبح
من هر روز چند بار اینجا سر میزنم تا ببینم کسی جوابم رو داده یا نه اما کسی جواب سوالمو نمیده :ناراحت:

سلام - وقت بخیر .

چه بانکهایی روی سیستم نصب دارین و الان برای این برنامه از چه بانکی استفاده می کنین ؟ در ضمن local به کدوم بانک داره اشاره می کنه ؟

(به نظر میاد که شما نام دیتا سورس رو اشتباه می دین ، اگر از sqlexpress استفاده می کنین احتمالا نام دیتاسورستون sqlexpress\. باید باشه)

ezamnejad
چهارشنبه 06 خرداد 1388, 13:57 عصر
با سلام مجدد
اطلاعات داخل tabel ها فراخوانی نمیشه مثل اینکه
عکس رو ببینید.
نمیدونم چرا به این شکل میاد.
کمکم کنید که این برنامه رو درست اجرا بگیرم ممنون می شم:قلب:

سلام
با تشکر از iman_22a .
مشکل برنامه شما در ارتباط با دیتابیس هست . چون امکان اتصال به سرور میسر نیست این پیغام داده میشه .
باید نام سرور را درون کانکشن تغییر بدهید . همونطور که iman_22a گفتند احتمالا شما از sqlexpress استفاده میکنید که همراه vs نصب میشه . اگر اینطوره نام سرور را به جای (local) به sqlexpress\. تغییر بدهید

rahelan
پنج شنبه 07 خرداد 1388, 16:03 عصر
خیلی ممنون از لطف اقا ایمان و اقای عظام نژاد
طبق فرمایشاتتون نام دیتا سورس رو عوض کردم
اما بازم یه مشکلی هست که عکسش رو ضمیمه کردم

bahar_engineer
پنج شنبه 18 تیر 1388, 16:56 عصر
سلام

از برنامه خوبتون ممنون من کاملاً صحیح روی vs2008 اجراش کردم و با sql مشکلی نداشتم اما برای اینکه بتونم ازش استفاده کنم نیاز دارم به اینکه بانکش اکسس باشه

هر کاری کردم نشد و موقع ورود به صفحه ای که سبد خرید رو نمایش می ده ، این خطا رو می ده که عکسشو ضمیمه کردم


آیا راهی هست که من بتونم از این برنامه با بانک اکسس استفاده کنم ؟

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

اگه فکرم اشتباهه لطفاً بگین پس سشن ها اینجا چکاره اند

و اینکه من چطور گریدی رو پر کنم که از دو جدول از بانکم باید استفاده کنم و موقع بروز رسانی یا حذف هم باید قاعدتاً در دو جدول عملیات رو انجام بدم

ممنون می شم

bahar_engineer
شنبه 20 تیر 1388, 09:51 صبح
کسی نبود جواب سوال منو بده؟:افسرده:

اصلاً یکی به من بگه توی صفحه view cart کانکشن ما به کدوم جدول متصل شده ؟ اصلاً لازمه گرید ویوی توی صفحه مشاهده سبد خرید، به بانک وصل بشه یا اینکه از طریق کوکی و سشن پر می شه؟

i'm Wating.....

ezamnejad
یک شنبه 21 تیر 1388, 15:56 عصر
کسی نبود جواب سوال منو بده؟:افسرده:

اصلاً یکی به من بگه توی صفحه view cart کانکشن ما به کدوم جدول متصل شده ؟ اصلاً لازمه گرید ویوی توی صفحه مشاهده سبد خرید، به بانک وصل بشه یا اینکه از طریق کوکی و سشن پر می شه؟

i'm Wating.....
کانکشن برای ذخیره اطلاعات درون جدولها پس از کلیک دکمه ثبت نهایی استفاده شده . اطلاعات گزید از کوکی یا سشن دریافت میشه و ربطی به کانکشن نداره .

tita206
شنبه 30 آبان 1388, 10:22 صبح
سلام .شما که پست مفید سبد خرید و گذاشتید کاش یه کم کدهاشو هم توضیح میدادید.من توش sql data source ی ندیدم و یه خورده گیج شدم.
میتونم خواهش کنم یه نمونه سبد خرید با c# , sqlserver2005 برام بفرستید به ایمیلم.
برا استفاده تو پایان نامه م میخوام نه تجاری....
من نمیتونم درک کنم چطوری برا هر نفر جداگانه با استفاده از یک جدول سبد که برای تمام مشتریان مشترک است، یک جدول سبد شامل چندین رکورد باید ایجاد کنم.در واقع نحوه ی افزودن هر کالا به لیست کالاهای قبلی
ممنونتون میشم اگه کمکم کنید. تنکس
email: tita_azad2000@yahoo.com

slashslash2009
شنبه 30 آبان 1388, 11:40 صبح
سلام .
من با asp 2008 یک سبد خرید طراحی کردم که در نوعه خودش بی نظیره و اونو با
PreviousPage.FindControl درست کردم و از هیچ دیتا بیسی تا آخرین عملیات یعنی زدن دکمه ثبت استفاده نکردم به نظرم این کار درست نیست که وقتی مشتری کالایی رو به سبد اظافه میکنه اونو در یک فایل ثبت کنه و باید در آخرین مرحله این کار صورت بگیره فکر کنم اینجوری سرعت هم زیاد میشه

hamid1988
شنبه 30 آبان 1388, 14:13 عصر
از دوستان یکی لطف کنه و در مورد کد کلاس هایی که ezamnejad (http://barnamenevis.org/forum/member.php?u=49996) نوشته اند کمی توضیح بده!
ممنون

persianspam
جمعه 13 فروردین 1389, 22:40 عصر
سلام .
من با asp 2008 یک سبد خرید طراحی کردم که در نوعه خودش بی نظیره و اونو با
PreviousPage.FindControl درست کردم و از هیچ دیتا بیسی تا آخرین عملیات یعنی زدن دکمه ثبت استفاده نکردم به نظرم این کار درست نیست که وقتی مشتری کالایی رو به سبد اظافه میکنه اونو در یک فایل ثبت کنه و باید در آخرین مرحله این کار صورت بگیره فکر کنم اینجوری سرعت هم زیاد میشه



خوب دوست عزیز اگه امکان داره اینو به ما هم بده تا استفاده کنیم و ببینیم قضیه از چه قراره.
منتظر شما هستیم.

sousan
چهارشنبه 03 شهریور 1389, 16:49 عصر
در EditShop اگر مشتری در تکست باکس مربوط به تعداد ، مقداری بیشتر از موجودی فروشگاه وارد کند چگوانه باید این مشکل را کنترل کرد ؟
فاکتور مشتری چگونه باید به مدیر سایت نشان داده شود ؟

sousan
پنج شنبه 04 شهریور 1389, 01:08 صبح
کسی از اساتید نیست راهنمایی کنه؟؟؟
خواهش می کنم یه کمکی، راهنمایی ، نظری چیزی...........

صادق صدقی
دوشنبه 29 شهریور 1389, 15:28 عصر
وقتی نمایش کارت رو می زنم View card
تویه grid view نام محصول رو نمایش نمی ده چرا؟

صادق صدقی
سه شنبه 30 شهریور 1389, 04:03 صبح
دوستان من مشکلشو که تویه پست قبلی گفته بودم حل کردم

جزئیات رو می تونید تویه این تاپیک (http://barnamenevis.org/forum/showthread.php?t=248053)ببینید

فایل رو هم ضمیمه کردم



---------------------------------------------------------------
کتاب های فارس ASP.NET (http://barnamenevis.org/forum/showthread.php?t=243542)

yardel
سه شنبه 13 مهر 1389, 19:02 عصر
سلام دوست عزیزم.

من در ایجاد سبد خرید با توجه به Sample شما به مشکل شکل زیر برخورد کردم . لطفا کمکم کنید. چند وقتی بدجوری گرفتار این قضیه شدم

صادق صدقی
سه شنبه 13 مهر 1389, 23:04 عصر
پارامتری که ارسال کردی نوعش فرق می کنه با پیش فرض
که تویه سبد خریده
نوشته دیگه
input string was not correct format

yardel
چهارشنبه 14 مهر 1389, 09:15 صبح
پارامتری که ارسال کردی نوعش فرق می کنه با پیش فرض
که تویه سبد خریده
نوشته دیگه
input string was not correct format

پارامتری که من (در سبد)ارسال کردم دقیقا مثل خود sample هستش یعنی از نوع String.و توی بانک هم از نوع nvarchar .حالا مشکل کار کجاست .لطفا بیشتر راهنمای کنید.

yardel
پنج شنبه 15 مهر 1389, 10:22 صبح
سلام .
من با asp 2008 یک سبد خرید طراحی کردم که در نوعه خودش بی نظیره و اونو با
PreviousPage.FindControl درست کردم و از هیچ دیتا بیسی تا آخرین عملیات یعنی زدن دکمه ثبت استفاده نکردم به نظرم این کار درست نیست که وقتی مشتری کالایی رو به سبد اظافه میکنه اونو در یک فایل ثبت کنه و باید در آخرین مرحله این کار صورت بگیره فکر کنم اینجوری سرعت هم زیاد میشه


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

صادق صدقی
پنج شنبه 15 مهر 1389, 11:17 صبح
همین سبد خریدی که من ویرایش شدش رو گذاشتم تمام نیاز هاتو بر طرف کمی کنه

shahab2005
جمعه 16 مهر 1389, 13:21 عصر
سلام
این سبد خرید داره روی pc کار می کنه ولی میره روی host چیزی توی سبد خرید نشون نمی ده
چرا؟

yardel
شنبه 17 مهر 1389, 10:22 صبح
سلام .
من با asp 2008 یک سبد خرید طراحی کردم که در نوعه خودش بی نظیره و اونو با
PreviousPage.FindControl درست کردم و از هیچ دیتا بیسی تا آخرین عملیات یعنی زدن دکمه ثبت استفاده نکردم به نظرم این کار درست نیست که وقتی مشتری کالایی رو به سبد اظافه میکنه اونو در یک فایل ثبت کنه و باید در آخرین مرحله این کار صورت بگیره فکر کنم اینجوری سرعت هم زیاد میشه


آقا پس چرا برنامه ای که نوشته اید به کسی نمی دید.؟فقط تعریف بود

ندااحمدی
شنبه 05 شهریور 1390, 14:42 عصر
چطر میتوان در برنامه شما یک آیکون سبد خرید گذاشت که برای بار اول در ان کلیک کرد پیغامی دهد که سبد کالا شما خالی است و با کلیک کردن در دفعات بعد محصولات انتخاب شده را نمایش دهد

hjran abdpor
شنبه 05 شهریور 1390, 16:55 عصر
سلام
این بستگی داره که شما برای نگه داری سبد خرید از سشن یا کوکی یا غیره ............ استفاده کرده بشاید بعد با یک شرط میتونید بفهمید خالی است یا نه .

ندااحمدی
یک شنبه 06 شهریور 1390, 10:07 صبح
از session استفاده میکنم میشه بگید شرط چجوری باید بنویسم

hjran abdpor
دوشنبه 07 شهریور 1390, 01:12 صبح
با سلام .
خوب بگید اگه خالی نباشه فلان کار را کن در غیر اینصروت یک پیغام بهش نشون بده.
این یک نمونه مثال برای سبد خرید است که از سشن استفاده کردم امیدوارم به درتون بخوره :

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("NameKala", typeof(string)));

dt.Columns.Add(new DataColumn("Price", typeof(string)));

dt.Columns.Add(new DataColumn("Dec", typeof(string)));
dt.Columns.Add(new DataColumn("Pic", typeof(string)));

DataRow dr = dt.NewRow();

dr["NameKala"] = txtbox2.Text;
dr["Price"] = txtbox.Text;
dr["Dec"] = txtbox1.Text;
dr["pic"] = txtbox3.ImageUrl;

dt.Rows.Add(dr);

this.GridView3.Visible = false;

GridView3.DataSource = dt;
GridView3.DataBind();


//Label11.Text = Session["Price_"].ToString() + Session["Dec_"].ToString() + Session["NameKala_"].ToString();

Session["grid"] = dt;
Label11.Text = "محصول شما به سبد خرید اضافه شد ";
Label12.Visible = false;
Label12.Text = Session["Code_"].ToString();

}
else
{
Label12.Text = "لطفا وارد سایت بشوید ";
}



protected void Page_Load(object sender, EventArgs e)
{
MultiView1.ActiveViewIndex = 0;
if (Session["grid"] != null)
{
DataTable d = (DataTable)Session["grid"];
GridView2.DataSource = d;
GridView2.DataBind();

}
else
{
Response.Redirect("Default.aspx");
}

}

angel farahani
جمعه 19 اردیبهشت 1393, 22:04 عصر
با سلام ، من از اس کیو ال 2008 استفاده میکنم ، میخوام دیتابیسی رو که در این پروژه گذاشتین را ببینم اما پیفام خطا میده و attach نمیشه . لطفا راهنماییم کنید که لااقل بتونم از کلاس ها و کدهای نوشته شده در پروژه ام استفاده کنم . چون واقعا به کدهای سبد خرید نیاز دارم . ممنونم

amir_T_2008
دوشنبه 08 دی 1393, 09:14 صبح
سلام دوستان یک سوال داشتم ممنون میشم پاسخ بدید

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

WHERE GroupID = 2", con);

فقط اطلاعات گروه 2 میاره در صورتی که من میخوام اونایی بیاره که id با id که پست شده یکی بود بیاره ولی نمیشه

ممنون میشم کمک کنید

hicamcctv
جمعه 20 فروردین 1395, 10:55 صبح
دوستان من هر کاری می کنم نمیتونم سبد خرید به سایتم اضافه کنم اگر کسی از دوستان کمک کنه ممنون میشم .
این سایت منه .
دوربین مدار بسته
(http://hicamcctv.com)