PDA

View Full Version : نحوه کارکرد سبد خرید



RIG000
یک شنبه 05 آبان 1392, 12:55 عصر
ما میتونیم واسه سبد خرید اینکار رو کنیم. وقتی چیزی میخریم بره تو یه جدول بشینه وسپس بریم یه چیز دیگه بخریم یا همون اضافه کنیم به سبد خرید ... اون قبلی رو تو یه تیبل داشته باشیم ....
..... و حالا جدید رو اضافه کردیم اون قبلی از دیتابیس سلکت بشه ...
و بعد از ازاینکه خرید نهایی رو انجام دادیم اطلاعات خریدار بره تو جدول ما بشینه ... و حالا این جدول مربوط به سبد خرید ما هم خالی بشه یا delete بشه به عبارتی درسته؟
ایا به این شکل باید کار کنم؟

Mag-Mag
یک شنبه 05 آبان 1392, 13:53 عصر
توضیحش سخت و طولانیه ولی امیدوارم بتونم
معمولا اینطوری هست که(برای حالتی که کاربری که داره از سایت خرید میکنه عضو سایت هست(یعنی UserId داری))
اول یه جدول داری که لیست محصولاتت هست
یه جدول هم داری به اسم مثلا فاکتورها که فیلد هاش میشه : نام خریدار(ID خریدار)- تاریخ خرید - وضعیت و مسلما یک فیلد id برای خود جدول فاکتورها که میشه شماره فاکتور
یه جدول دیگه داری به اسم مثلا ریز فاکتورها که فیلد هاش میشه : شماره فاکتور-شماره محصول-تعداد-قیمت محصول-
این فیلدهایی که من میگم حداقل هست تو بسته به نیازت می تونی تغییر بدی

حالا می ریم سراغ روند خرید
وقنی یک نفر کالایی رو به سبد خریدش اضافه میکنه با فرض اینکه اولین هست یک سطر در جدول فاکتورها اضافه میکنی که فقط وضعیتش رو مثلا میزنی 1 که این مثلا بعنی کالا هنوز در سبد خرید هست و نهایی نشده
و شماره خود کالا . شماره فاکتور(یعنی شماره سطری که در جدول فاکتورها الان اضافه کردی) و بقیه موارد لازم رو هم در جدول ریز فاکتورهااضافه میکنی

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

وقتی هم کالا رو میخوای به جدول ریز فاکتورها اضافه کنی باز باید قبلش بر اساس شماره محصول و شماره فاکتور select بزنی که اگر وجود داشت فقط تعداد سفارش رو update کنی
حالا عملیات خرید تمام می شه و کاربر دکمه تایید نهایی سبد خرید رو میزنه تو فیلد وضعیت جدول فاکتور رو بر اساس اون فاکتوری که الان داره تایید نهایی می کنه رو مثلا می کنی 2 (و این مثلا یعنی کاربر این قاکتور رو نهایی کرده ولی هنوز مدیر تاییدش نکرده)

و همینطور وقتی مدیر تایید کرد وضعیت رو میکنی 3 یعنی تایید شده و .....

اگر هم پرداخت آنلاین داری که باید یه جدول هم بگیری که ببینی برای هر فاکتور چه مبلغی پرداخت شده.

امیدوارم کمک کرده باشه.

RIG000
یک شنبه 05 آبان 1392, 14:18 عصر
این رو نفهمیدم :(

قنی یک نفر کالایی رو به سبد خریدش اضافه میکنه با فرض اینکه اولین هست یک سطر در جدول فاکتورها اضافه میکنی که فقط وضعیتش رو مثلا میزنی 1 که این مثلا بعنی کالا هنوز در سبد خرید هست و نهایی نشده
و شماره خود کالا . شماره فاکتور(یعنی شماره سطری که در جدول فاکتورها الان اضافه کردی) و بقیه موارد لازم رو هم در جدول ریز فاکتورهااضافه میکنی

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

وقتی هم کالا رو میخوای به جدول ریز فاکتورها اضافه کنی باز باید قبلش بر اساس شماره محصول و شماره فاکتور select بزنی که اگر وجود داشت فقط تعداد سفارش رو update کنی
حالا عملیات خرید تمام می شه و کاربر دکمه تایید نهایی سبد خرید رو میزنه تو فیلد وضعیت جدول فاکتور رو بر اساس اون فاکتوری که الان داره تایید نهایی می کنه رو مثلا می کنی 2 (و این مثلا یعنی کاربر این قاکتور رو نهایی کرده ولی هنوز مدیر تاییدش نکرده)

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

RIG000
یک شنبه 05 آبان 1392, 14:39 عصر
ایا این روال من درسته؟ لطفا" راهنمایی کنید..

RIG000
یک شنبه 05 آبان 1392, 14:55 عصر
اگه ما چند تا خرید رو ثبت کنیم.... مثلا 3 تا خرید نهایی کردیم این تو سه تا رکورد میشهنه اینجوری کد فکاتور ما که متمایز میشه؟!!1

Mag-Mag
دوشنبه 06 آبان 1392, 13:46 عصر
نمیشه ما یه جدول بگیریم و اون مخصوص سبد خرید باشه هر چی که خرید کردیم تو جدول سبد خرید بشینه و سپس بیایم تو یه صفحه این جدول رو نشون بدیم؟؟؟ و یه جمع کل هم بذاریم واسش و ....
حالا که خرید نهایی رو بزنیم این مقدار ها رو به طور لیست در جدول فاکتور بنشونیم و سپس این جدول سبد خرید رو پاک کنیم؟
این خوب نیست؟


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

برای پرداخت انلاین هم استرس نداشته باش
بسیار کاره ساده ای است
اصلا کد هاش همه جا هست

تو یکسری اطلاعات رو به صغحه بانک پاس میدی و میگی وقتی پرداخت انجام شد کاربر رو بفرست به فلان صفحه من
بعد بانک بعد از اتمام عملیات پرداخت کاربر رو redirect میکنه به صفحه تو با یکسری پارامتر
مثلا توی پارامتر result کد نتیجه تراکنش رو میذازه
بعد تو با یک if ساده میگی اگر result==1 به کاربر بگه پرداخت انچام شد

Mag-Mag
دوشنبه 06 آبان 1392, 13:48 عصر
خوب تو هردفعه با اون فاکتوری کار داری که وضعیتش جدید هست
اون فاکتور های که نهایی میشن وضعیت شون رو میکنی نهایی
پس در هر بار خرید فقط برای هر کاربر یک فاکتور با وضعیت جدید داری

RIG000
سه شنبه 07 آبان 1392, 08:57 صبح
یعمی چی نهایی بشه؟

RIG000
سه شنبه 07 آبان 1392, 10:37 صبح
:( .... ریز فاکتور ها چیه؟

Mag-Mag
چهارشنبه 08 آبان 1392, 11:19 صبح
یعمی چی نهایی بشه؟

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

Mag-Mag
چهارشنبه 08 آبان 1392, 11:20 صبح
:( .... ریز فاکتور ها چیه؟

ریزفاکتور ها اسم جدول هست
همون جدول سبد خرید تو

Mag-Mag
چهارشنبه 08 آبان 1392, 11:51 صبح
ببین
اول تو یک لیست از محصولات داری برای خرید
من وقتی رو اون کلیک می کنم تا به سبد خریدم اضافش کنم این اتفاق ها می افته

اول میام می بینم این کاربر که داره خرید میکنه فاکتور نهایی نشده داره یا نه؟(فاکتور با وضعیت جدید)منظور چک کردن فیلد status جدول فاکتور هاست
اگر داشت ایدی اون فاکتور رو میکشم بیرون.اگر نداشت که یک سطر(یعنی یک فاکتور جدید)به جدول فاکتورها اضافه میکنم
مثلا میشه

select Factorid from factors where userid=کاربر جاری and status=1

اگر این select مقدار داشت یعنی کاربر هنوز یک فاکتور جدید که نهایی نکرده باشه داره(به عبارتی هنوز سبد خریدش رو تایید نکرده)
فیلد status جدول فاکتور نشان دهنده وضعیت هر فاکتور هست.ما 4 تا وضعیت داریم
1 یعنی فاکتور جدید
2 یعنی از طرف کاربر(خریدار)نهایی شده و ارسال شده برای مدیر
3 یعنی مدیر هم فاکتور رو تایید کرده
4 بعنی مدیر تایید تکرده فاکتور رو

حالا اطلاعات اون محصولی (یا محصولاتی) رو که خرید کرده رو میخوایم بریزیم توی جدول سبد خرید یا به قول من جدول ریز فاکتورها
اول میایم بر اساس ایدی محصول و شماره فاکتور (ایدی محصول که خوب روش کلیک کرده تا اضافش کنه به سبد خرید و شماره فاکتور هم که بالا گفتم)
یک Select در جدول سبد خرید میزنیم که ببینیم این محصول رو قبلا به این فاکتور اضافه کرده با نه؟
ممکن من یک بار یک محصول رو به تعداد 2 عدد به سبد حریدم اضافه کردم حالا می خوام تعداش رو بکنم 3تا
اگر چیزی پیدا کردی که فقط از اون سطر تعدا رو update میکنی.(برای اینه که از یه محصول 2 تا ردیف در سبد خریدت نباشه)
اگر هم پیدا نکردی که یک سطر به جدول سید حرید اضافه میکنی

حالا کاربر خریدهاش رو کرده و روی دکمه نهایی کردن خرید میزنه
و تو این کار رو میکنی

update factors set status=2 where factorid=شماره فاکتور

حالا این فاکتور در کارتابل مدیر نشون داده میشه
یعنی برای مدیر فاکتورهایی رو میاری که وضعیتشون 2 هست
مدیر یا تایید میکنه یا نه

کاربر که روی صفحه سبد حریدش میزنه
اول یک select میزنی از جدول فاکتورها

select * from factors where userid=کاربرجاری and status=1

یعنی چک میکنی که کاربر فاکنور جدید(یا اصطلاحا در جربان)داره یا نه
اگز select حالی بود که به کاربر پیغام میدی سبد حرید حالی است اگر نیود بر اساس فیلد factorid از جدول سبد خرید select میزنی و رکورد هاشو زیر هم بعنوان سبد خرید نشون میدی

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

select * from factors where userid=کاربرجاری

و حالا بر اساس factorid

select * from جدول سبد خزید where شماره فاکتور = factorid

به همین راحتی

RIG000
چهارشنبه 08 آبان 1392, 12:25 عصر
ممنون برسم به این قسمت این موارد رو چک میکنم و اگه مشکلی بود سوال میکنم. متشکرم مهندس

Mag-Mag
شنبه 11 آبان 1392, 13:30 عصر
سلام
این لینک یک فروشگاه آماده است
اینجا (http://barnamenevis.org/showthread.php?408547-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%81%D8%B1%D9%88%D8%B4%DA%AF%D8%A7%D9%87-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA%DB%8C-%D8%A8%D8%A7-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D9%87-%D8%A8%D8%A7%D9%86%DA%A9-%D9%85%D9%84%D8%AA-(Open-Source)&p=1906396#post1906396)