درود بر شما
آقا یه سوال
ببینید ما یه وبسایت خبری داریم
که میخوام مثلا پر کامنت ترین های 24 ساعت -1 هفته - 1 ماه گذشته رو نشون بدیم
و مثلا پر بازدید ترین های 24 ساعت -1 هفته و 1 ماه گذشته
این به نظر شما چطور پیاده سازی بشه بهینه تره؟
این موضوع به سرور مربوط نمیشه . به کد نویسی بک اند مربوط میشه. (البته شاید منظورتون از سرور همون بک اند بوده)
برای اینکار شما احتیاج دارید که ساختار دیتابیس درستی داشته باشید .
مثلا:
یک تیبل برای اخبار
یک تیبل برای کامنت های روی اخبار که با کلید خارجی به این تیبل متصل هستند. (رابطه یک به چند)
تیبل هاتون باید تاریخ ایجاد رکورد رو ثبت کنند. با این کار شما میتونید از SQL یا ORM ای استفاده کنید و کامنت های 24 ساعت گذشته یا هفته گذشته یا ماه گذشته رو با توجه به تاریخ الان و محاسبه تاریخ گذشته در بیارید و تعدادشون رو محاسبه کنید و به ترتیب از بیشترین به کمترین سورت کنید و سر آخر روی جدول اخبارتون join بزنید.
توی نت که سرچ کردم همین سوال رو پرسیده بودن
لینک سوال
برید توی دیتابیس یک دیتابیس بسازید و کد ها زیر رو توش وارد کنید.
create table news (newsId int, newsTitle varchar(50), newsDate date, newsReadCount int);
create table comments (ID int, newsID int, comment varchar(50), ndate date);
insert into news values
(1, 'news1', '20120414', 5),
(2, 'news2', '20120514', 3),
(3, 'news3', '20120614', 9),
(4, 'news4', '20120714', 10),
(5, 'news5', '20120814', 11),
(6, 'news6', '20120914', 5);
insert into comments values
(1, 1, 'comment1', '20120414'),
(2, 1, 'comment2', '20120414'),
(3, 1, 'comment3', '20120414'),
(4, 1, 'comment4', '20120414'),
(5, 2, 'comment5', '20120414'),
(6, 2, 'comment6', '20120414'),
(7, 2, 'comment7', '20120414'),
(8, 3, 'comment8', '20120414'),
(9, 3, 'comment9', '20120414'),
(10, 3, 'comment10', '20120414'),
(11, 3, 'comment11', '20120414'),
(12, 3, 'comment12', '20120414'),
(13, 3, 'comment13', '20120414'),
(14, 3, 'comment14', '20120414'),
(15, 4, 'comment15', '20120414'),
(16, 4, 'comment16', '20120414'),
(17, 6, 'comment17', '20120414'),
(18, 6, 'comment18', '20120414'),
(19, 6, 'comment19', '20120414'),
(20, 6, 'comment20', '20120414');
با دستورات زیر هم وارد کنید و محتوا فیلتر میشه . با این روش متوجه خواهید شد.
SELECT
news.newsTitle, COUNT(comments.ID) AS `Total Comments`
FROM news INNER JOIN comments ON
news.newsId = comments.newsID AND news.newsDate BETWEEN '20120414' AND '20130414'
GROUP BY news.newsId
ORDER BY `Total Comments` DESC
LIMIT 10;
@afsharmahmoodian
کدنویسی سمت سرور میخواستم بپرسم که بله نمیدونم چرا اشتباه نوشتم منظور همون سرور ساید و بکند بوده
مرسی
منم نظرم همین روش بود
ولی خب گفتم بپرسم شاید روش بهتری هم بوده باشه که مثل همین رو پیشنهاد دادید و دوستان دیگه هم دادن
مرسی ازتون
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟