PDA

View Full Version : سوال: مدیریت بنرهای تبلیغاتی



bftarane
یک شنبه 14 اردیبهشت 1393, 23:11 عصر
فرض کنید که یه سایت آگهی داریم


4 تا بنر در بالای صفحه (بنرهای کلاس A)

یک بنر در سمت راست (بنر کلاس B)

و 4 بنر سمت چپ (بنرهای کلاس C)

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

فرضاً کاربر موجودیش کافی هست
بعد تماس می گیره می گه می خوام عکس مورد نظرم به عنوان بنر کلاس A نمایش داده شه

حالا ادمین باید چک کنه ببینه این بنر آیا خالی هست یا نه، چه تعداد در صف انتظار برای این بنر هستند؟ تا بتونه یه تاریخ به فرد مورد نظر بده که در این تاریخ بنر خالی میشه و شما می تونید تبلیغتون رو نمایش بدید.

من دو تا جدول در نظر گرفتم به شکل زیر
118643

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

تا خیلی راحت چک کنه کدوم بنرها خالی هستند، چند نفر در صف رزرو بنرها هستند و ...


یعنی چطور میشه بنرهایی از جدول tbl_banner
رو نمایش داد که در جدول tbl_Booked وجود ندارن
یا اگه دارن Active اونها در جدول
tbl_booked
false هست
و اینکه اون فیلد Free
که گذاشتم لازمه؟ یا از روی تاریخهای انقضا و اونهایی که در جدول Booked وجود ندارن این قضیه رو بررسی کنیم؟

لطفاً راهنمایی کنید.

majidnazari65
دوشنبه 15 اردیبهشت 1393, 00:18 صبح
جداول رو خوب طراحی نکردی.
جدول tbl_banner رو بذار برای مشخصات عمومی بنر. مثلا کلاس بنر، محل قرارگیری ، اندازه بنر، فعال یا غیر فعال بودن (برای مواقعی که خودت نمیخوای سفارش بگیری نه اینکه بنر فعلا در دسترس نباشه) و ...
یک جدول هم برای مشخصات سفارشات بنر در نظر بگیر (که به نظر میاد tbl_Booked این کارو میکنه) این جدول میتونه شامل آی دی بنر، تاریخ ثبت و پایان، کاربر مربوطه، عکس و ... باشه.
با این روش میتونی برای چندماه آینده هم سفارشات رو ذخیره کنی و هر کدوم رو سر موعد نمایش بدی.

برای اینکه بتونی بنرهایی رو نمایش بدی که در جدول tbl_Booked وجود ندارن (یعنی تا حالا ثبت نشدن) باید بجای INNER JOIN از RIGHT JOIN استفاده کنی. RIGHT JOIN بر خلاف INNER قیلد رکوردهایی که وجود ندارند رو با NULL پر میکنه و بر همین اساس میتونی اونا رو تشخیص بدی.
بری بقیه شرطها هم از Active و تاریخ انقضا استفاده کن.

bftarane
دوشنبه 15 اردیبهشت 1393, 10:03 صبح
برای اینکه بتونی بنرهایی رو نمایش بدی که در جدول tbl_Booked وجود ندارن (یعنی تا حالا ثبت نشدن)
نه من ثبت شده ها رو در جدول tbl_Banner نگه می داشتم و
tbl_Booked رو برای افراد در حال انتظار برای یک بنر در نظر گرفته بودم مثلاً 4 نفر در صف انتظار بنر کلاس A هستند.
یعنی وقتی می خواهیم وقت بدیم برای بنر علاوه بر اینکه تاریخ رزرو آخرین فردی که بنر رو رزرو کرده هم باید در نظر گرفته بشه. با این قسمتش مشکل دارم.