7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

ساخت سبد خرید با PHP و MySQL

Scroll to top
Read Time: 11 mins

Persian (پارسی) translation by Mahshad Kalantari (you can also view the original English article)

برای آموزش screencast+ این هفته، قصد داریم به شما چگونگی ساخت سبد خرید را با PHP و MySQL آموزش دهیم. همانطور که خواهید دید، به آن اندازه ای که فکر می‌کنید سخت نخواهد بود.


پیش نمایش اسکرین‌کست



مرحله ۱

بیایید با نگاهی به ساختار پوشه شروع کنیم:


ساختار

  • reset.css - شما میتوانید از این لینک ریست کنید.
  • style.css - فایل CSSای که برای استایل دهی به HTML از آن استفاده خواهیم کرد.
  • connection.php - فایلی که اتصال دیتابیس ما را ایجاد می‌کند.
  • index.php - قالب سبد خرید ما.
  • cart.php - فایلی که می‌تواند محصولاتمان را از سبد خرید تغییر دهد. (اضافه، حذف کردن)
  • products.php - صفحه لیست محصولات.

مرحله ۲

با نوشتن کدهای HTML شروع میکنیم و سپس به آن استایل می‌دهیم. بنابراین index.php را باز کنید و کدهای زیر را کپی/پیست کنید.

همانطور که می‌بینید، صفحه ما دو ستون دارد: ستون اصلی و سایدبار. بیایید به سراغ CSS برویم. فایل style.css را باز کرده و کد زیر را بنویسید:

در اینجا صفحه محصولات ما باید شبیه به این باشد:



اسکرین‌کست کامل



مرحله ۳

قبل از اینکه وارد بخش PHP/MySQL شویم، لازم است دیتابیس را بسازیم. بنابراین phpMyadmin را باز کرده و این مراحل را دنبال کنید:

  1. به تب Privileges بروید، روی دکمه add new user کلیک کنید، و از تنظیمات زیر استفاده کنید: Username: tutorial; Host: localhost; Password: supersecretpassword; اکنون مطمئن شوید که Global privileges تنظیم شده باشد. سپس به مرحله بعد بروید.
  2. یک دیتابیس جدید به نام tutorials بسازید.
  3. یک جدول جدید به نام products ساخته و تعداد فیلدها را ۴ بگذارید. اکنون فیلدها را پر کنید: id_integer - مطمئن شوید که این فیلد روی INT تنظیم شده و PRIMARY باشد (همچنین آن را auto_increment کنید). name - از نوع VARCHAR با طول ۱۰۰ تنظیم کنید. description - از نوع VARCHAR و طول ۲۵۰. price - روی DECIMAL(2,6) تنظیم کنید.
  4. جدول خود را با تعدادی محصولات نمونه پر کنید.

برای صرفه‌جویی در زمان، من جدول محصولاتم را اکسپورت کرده‌ام بنابراین شما می‌توانید به سادگی کوئری زیر را اجرا کنید:





مرحله ۴

قبل از اینکه به استخراج داده ها از دیتابیس بپردازیم، یک قالب برای لیست محصولات و سبد خرید در فایل index.php ایجاد خواهم کرد. بنابراین کد زیر را ابتدای فایل index.php خود اضافه کنید:

  1. session_start() - این برای استفاده بعدی است. درواقع به ما اجازه می‌دهد از سشن ها استفاده کنیم (بسیار مهم است که session_start قبل از اینکه هر داده دیگری به مرورگر ارسال شود، نوشته شود).
  2. در خط دوم، فایل connection.php که اجازه اتصال به دیتابیس را می‌دهد اضافه کردیم (ما با این مورد یک لحظه برخورد خواهیم داشت). یک چیز دیگر: تفاوت بین include و require این است که اگراز require استفاده کنید و فایل پیدا نشود، اجرای اسکریپت به پایان خواهد رسید. اگر از "include" استفاده کنید، اسکریپت به کار خود ادامه خواهد داد.
  3. به جای کپی کردن تمام کدهای HTML (لینک به CSS، به JS) به ازای هرفایل در سایتتان، می‌توانید آنها را به یک فایل واحد نسبت دهید. بنابراین ابتدا بررسی می‌کنم که یک متغیر GET به نام "page set" وجود دارد. اگر وجود نداشت، یک متغیر جدید به نام _pages می‌سازم. اگر متغیر GET به نام pages اول تنظیم شده باشد، می‌خواهم مطمئن شوم فایلی که می‌خواهم اضافه شود، یک صفحه معتبر است.

برای این کار، باید فایل را اضافه کنیم. این خط را به index.php و بین div با آیدی "main" اضافه کنید.

اکنون این تمام محتوای index.php ما است:


بیایید اتصال به MySQL ایجاد کنیم. فایل connections.php را باز کرده و خطوط زیر را اضافه کنید:


مرحله ۵

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

بیایید نگاهی به این صفحه بی‌اندازیم:


همانطور که می‌بینید، بسیار زشت است. پس اجازه دهید با اضافه کردن این CSS اضافه به آن استایل بدهیم.

خوب: اجازه دهید یک نگاه دیگر هم بی‌اندازیم:


به نظر خیلی بهتر می‌رسد، فکر نمی‌کنید؟ در زیر کد کامل style.css را دارید:


مرحله ۶

قبل از اینکه محصولات را از دیتابیس استخراج کنیم، اجازه دهید ۲ سطر اخر جدول را از جدولمان پاک کنیم (فقط برای اینکه ببینیم جدولمان به چه شکل خواهد بود از آن استفاده کردیم). این را پاک کنید:

عالیه! حالا در جایی که سطرهای جدول بودند، کد PHP زیر را بنویسید:

  1. پس، ما اول از SELECT برای گرفتن محصولات استفاده کردیم، سپس داخل یک حلقه هر سطر از دیتابیس را پیمایش کرده و آن را در یک سطر از جدول چاپ کردیم.
  2. می‌توانید ببینید که لینک ها به همان صفحه اشاره دارند (وقتی کاربر روی لینک محصول کلیک کنید، محصول به سبدخرید/سشن اضافه شده است). ما فقط بعضی متغیرهای اضافه مانند آیدی محصول را ارسال می‌کنیم.

اگر موس را روی هرکدام از لینک های افزودن به سبد خرید بیاورید، پایین صفحه، آیدی محصولی که ارسال شده است را می‌توانید ببینید.



مرحله ۷

با اضافه کردن کد زیر در بالای صفحه، لینک کار خواهد کرد:

  1. اگر متغیر GET به نام action تنظیم شده و مقدار آن ADD باشد، کد را اجرا خواهیم کرد.
  2. مطمئن می‌شویم آیدی‌ای که از متغیر GET ارسال شده، عددی باشد.
  3. اگر آیدی محصول در SESSION سبدخرید باشد، تعداد را ۱ واحد افزایش می‌دهیم.
  4. اگر آیدی محصول در سشن نباشد، باید مطمئن شویم که آیدی ارسال شده از طریق متغیر GET در دیتابیس وجود داشته باشد. اگر بود، قیمت را برداشته و سشن آن را ایجاد میکنیم. اگر نبود، متغیری با نام message را تنظیم می‌کنیم که خطای ما را نگه دارد.

بگذارید بررسی کنیم که آیا متغیر message تنظیم شده است و آن را در صفحه چاپ کنیم (این کد را زیر H1 عنوان صفحه بنویسید):

اینجا شما صفحه products.php کامل شده را می‌بینید.

اگر آیدی محصول نامعتبر باشد، پیام خطا وجود دارد.



مرحله ۸

بیایید به index.php برگردیم و سایدبار را بسازیم. کد زیر را اضافه کنید:

  1. ابتدا بررسی می‌کنیم که سشن سبد خرید موجود باشد. اگر نبود، یک پیام مبنی بر خالی بودن سبد خرید به کاربر نمایش می‌دهیم.
  2. بعد ما یک SELECT برای MySQL می‌سازیم، ولی فقط محصولاتی را انتخاب می‌کنیم که در سشن هم موجود باشند. برای انجام این کار، از تابع foreach استفاده می‌کنیم. بنابراین ما سشن را پیمایش کرده و آیدی محصولات را به SELECT اضافه می‌کنیم. بعد، از تابع substr استفاده کرده تا اخرین کاما را از SELECT حذف کنیم.
  3. در آخر داده را به مرورگر ارسال می‌کنیم.

نگاهی به تصویر زیر بی‌اندازید:



از آنجا که index.php یک قالب برای تمام فایل ها است، سایدبار در cart.php نیز نمایش داده می‌شود. عالی نیست؟!


مرحله ۹

در آخر، cart.php را باز کرده و شروع به نوشتن کد زیر کنید:

این کد شبیه به قسمت هایی از index.php و products.php است، بنابراین من قصد ندارم همه چیز را دوباره توضیح بدهم. باید توجه کنید که تعداد، به جای نمایش دادن در یک فرم، در یک جعبه ورودی نمایش داده شده‌اند (پس ما می‌توانیم تعداد را تغییر دهیم). همچنین جدول در تگ فرم قرار داده شده است. برای به دست آوردن مبلغ کل اقلام، تعداد کالای هر آیدی محصول (از سشن) را در قیمت آن ضرب کنید. این کار در هر حلقه انجام می‌شود.

توجه: ورودی یک آرایه است، کلید آیدی محصول است، و quantity مقدار تعداد است.



مرحله ۱۰

آخرین مرحله ای که باید انجام دهیم این است که فرم کار کند. بنابراین این کد را بالای صفحه cart.php اضافه کنید.

  1. ابتدا بررسی می‌کنیم که فرم ارسال شده باشد. اگر ارسال شده بود و مقدار ورودی صفر بود، آن سشن را از بین می‌بریم.
  2. در عوض اگر مقدار ورودی هر عدد دیگری بود، تعداد را برابر با آن مقدار قرار می‌دهیم.

اینجا فایل cart.php کامل شده است.


امیدوارم از این آموزش لذت برده باشید. اگر سوالی دارید، حتما با دقت بیشتری آموزش ویدیویی را نگاه کنید!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.