• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
الگوریتم پربازدید ترین مطالب 24 ساعت گذشته
#1
سلام
چطوری می تونم الگوریتمی بنویسم که پر بازدید ترین مطالب در 24 ساعت آخر نمایش داده بشه.
سیستم مدیریت محتوای من اختصاصیه و ایده خاصی به ذهنم نمی رسه.
  پاسخ
تشکر شده توسط :
#2
همیشه بهتر موضوع رو ریز ریز کنی و به قسمت های کوچیکتر تقسیمش کنی تا بتونی حلش کنی...
یه مثال میزنم تا متوجه اصل ماجرا بشی:
اول لازم داری تا یک فیلد views از نوع int به جدول مطالبت اضافه کنی که کلیک هارو داخلش ذخیره کنی -> مقدار این فیلد views توسط کلیکی که روی ID اون مطلب میشه بالا میره.
پس حالا می تونی پربازدیدترین مطالب رو نمایش بدی...

حالا برای نمایش پربازدید ترین مطالب در هر تاریخ خاص:
لازم داری تا یک فیلد last_view از نوع date/timestamp به جدول مطلبت اضافه کنی که زمان آخرین کلیک رو داخلش ذخیره کنی -> مقدار فیلد last_view توسط زمان آخرین کلیک آپدیت میشه.
پس حالا می تونی پربازدیدترین مطالب در تاریخ خاص رو نمایش بدی...

و برای نمایش پربازدید ترین مطالب در 24 ساعت گذشته:
کد پی‌اچ‌پی:
SELECT FROM `tbl_postsWHERE DATE(`last_view`) > DATE_SUB(CURDATE(), INTERVAL 24 HOURSORDER BY `viewslimit 5;
یا
SELECT 
FROM `tbl_postsWHERE `last_view` > (NOW() - INTERVAL 24 HOURORDERBY `viewslimit 5;
یا
SELECT 
FROM `tbl_postsWHERE `last_view` = '" . date('Y-m-d H:i:s', strtotime('-24 hours')) . "' ORDERBY `viewslimit 5;
یا
SELECT 
FROM `tbl_postsWHERE `last_view` = '" . date('Y-m-d h:i:s', strtotime("-1 day")) . "' ORDERBY `viewslimit 5;
یا
SELECT 
FROM `tbl_postsWHERE DATE(`last_view`) = DATE(CAST(NOW() - INTERVAL 1 DAY AS DATE)) ORDERBY `viewslimit 5;
یا
SELECT 
FROM `tbl_postsWHERE DATEDIFF(NOW(), `last_view`) <= 1 ORDERBY `viewslimit 5
همشون یکی هستن، بسته به سبک کد نویسیت و نوع فیلد last_view...

نکته: اگر فکر میکنی مطالبت view زیادی خواهند داشت، بجای نوع int از نوع bigint(20 استفاده کن.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : undefined esmahdi shgninc
#3
من فیلد numView رو تو جدول مطالب posts دارم و با هر کلیک روی مطلب یک عدد به این فیلد اضافه می شه.
اما last_view فقط زمان آخرین کلیک رو نشون می ده و ربطی به "پر بازدیدترین مطالب 24 ساعت گذشته" نداره.
با توجه به چیزی که من از مطلبتون فهمیدم، کاری که شما می گید آخرین پستایی رو نشون می ده که ظرف 24 ساعت گذشته کلیک شدن.
شایدم من متوجه نشدم، لطفا یه طور دیگه توضیح بدید.
  پاسخ
تشکر شده توسط :
#4
نقل قول:اما last_view فقط زمان آخرین کلیک رو نشون می ده
دقیقاً همینه.

کوئری اول: پست هایی که در 24 ساعت گذشته روشون کلیک شده... که سادست، درسته؟

کوئری دوم: پست هایی که بیشترین کلیک روشون شده... که اینم سادست، درسته؟

در آخر، ترکیب کوئری اول و دوم. که میشه: پر کلیک ترین پست ها + در 24 ساعت گذشته.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : esmahdi
#5
مثلا فرض کنید تو ماه فروردین هستیم. اول فروردین یک پست 2000 بار مشاهده شد، و دیگه اصلا مشاهده نشد تا روز 29 فروردین ساعت 11 شب یک بار مشاهده می شه.
در عین حال در روز 29 فروردین پست های دیگه ده ها بار مشاهده شدن. یعنی اگر ما 29 فروردین ساعت 11 و 5 دقیقه شب بخواهیم پر بازدید ترین مطالب 24 ساعت گذشته رو ببینیم این پستی که اول ماه زدیم نشون داده می شه. در صورتی که این پست بیشترین بازدیدش رو اول ماه داشته و تو 24 ساعت گذشته فقط یک بار نشون داده شده ولی چون صرفا 5 دقیقه قبل از گرفتن خروجی یک بار دیده شده در نتایج خروجی ما ظاهر می شه.
منظورتون رو اینجوری متوجه شدم! Undecided
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان