ابوالفضل
10 ماه پیش توسط ابوالفضل مطرح شد
2 پاسخ

سوال راجع به سمت سرور سایت

درود بر شما
آقا یه سوال
ببینید ما یه وبسایت خبری داریم
که میخوام مثلا پر کامنت ترین های 24 ساعت -1 هفته - 1 ماه گذشته رو نشون بدیم
و مثلا پر بازدید ترین های 24 ساعت -1 هفته و 1 ماه گذشته
این به نظر شما چطور پیاده سازی بشه بهینه تره؟


ثبت پرسش جدید
افشار محمودیان
تخصص : برنامه نویس
@afsharmahmoodian 10 ماه پیش آپدیت شد
0

این موضوع به سرور مربوط نمیشه . به کد نویسی بک اند مربوط میشه. (البته شاید منظورتون از سرور همون بک اند بوده)
برای اینکار شما احتیاج دارید که ساختار دیتابیس درستی داشته باشید .
مثلا:
یک تیبل برای اخبار
یک تیبل برای کامنت های روی اخبار که با کلید خارجی به این تیبل متصل هستند. (رابطه یک به چند)

تیبل هاتون باید تاریخ ایجاد رکورد رو ثبت کنند. با این کار شما میتونید از 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;

ابوالفضل
تخصص : برنامه نويس
@amata 10 ماه پیش مطرح شد
0

@afsharmahmoodian
کدنویسی سمت سرور میخواستم بپرسم که بله نمیدونم چرا اشتباه نوشتم منظور همون سرور ساید و بکند بوده
مرسی
منم نظرم همین روش بود
ولی خب گفتم بپرسم شاید روش بهتری هم بوده باشه که مثل همین رو پیشنهاد دادید و دوستان دیگه هم دادن
مرسی ازتون


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام