2009-07-27 2 views
0

У меня есть социальная сеть, поэтому блог - это только вы можете сказать, что виджет сайта для пользователя, поэтому каждый пользователь может иметь блог, я хотел бы сделать этот блог максимально приятным. Когда вы переходите на страницу блога пользователей, он показывает все блоги за текущий месяц.Как делают системы блога?

Мой вопрос, как я могу показать столбец на стороне, как этот июля 2009 июня 2009 мая 2009 апреля 2009 марта 2009 февраля 2009

Загвоздка он должен только список месяцев с пользователь присоединился к сайту до текущей, поэтому пользователь, который присоединился2 лет назад, теперь будет иметь 24 из этих ссылок, а пользователь всего лишь 1 месяц или новее будет видеть только 1?

Система использует PHP/MySQL

ответ

2

Предполагая, что вы:

  • только хотят принимать во внимание месяцы, когда есть блог-пост от пользователя
  • ваша БД MySQL

Вы могли бы попробовать что-то вроде этого:

select concat(YEAR(date), '-', MONTH(date)) as month, count(*) as num 
from ab_post 
where user_id = 1 
group by YEAR(date), MONTH(date) 
order by YEAR(date) desc, MONTH(date) desc; 

Он будет:

  • -лист лет/месяц, когда было сообщение от пользователя «1» (это должно быть динамичным, конечно)
  • за каждый месяц, дают сколько сообщений есть

это значит, вы получите что-то вроде этого:

+--------+-----+ 
| month | num | 
+--------+-----+ 
| 2008-6 | 1 | 
| 2008-5 | 1 | 
| 2008-4 | 3 | 
| 2008-3 | 1 | 
+--------+-----+ 

Thing заметить:

  • groupin г в год/месяц
  • упорядочивание по дате по алфавиту

Как примечание стороны, это даст месяц как 1 цифра для января по сентябрь: до вас, чтобы найти правильный формат в помощи в MySQL ;-)

Удачи!

+0

Спасибо, что это лучший способ сделайте это, но для производительности каждый запрос подсчитывается, и я думаю, что это будет дополнительный запрос, я сохраняю дату регистрации пользователей, могу ли я сделать некоторую математику, чтобы определить месяцы, в которые они были участником, даже если месяц имеет 0 сообщение, я буду показать это – JasonDavis

+0

Как я беру дату регистрации пользователей и сегодняшнюю дату и вытаскиваю массив месяцев между ними как-то – JasonDavis

+0

Если вы не автомобильный e о показе месяцев без публикации, ваше решение, вероятно, самое лучшее, да :-) (но, как конечный пользователь, я бы подумал, что это необычно - особенно если месяцы - это ссылки на страницы, на которых отображаются сообщения этого месяца, что означает страницы без почты); другое решение, чтобы не делать слишком много запросов, было бы использовать какой-то кеширующий mecanism для «блока», который содержит эти ссылки (очевидно, означает, что для каждого пользователя будет один кеш, и его нужно удалить, когда создается почта/deleted/опубликовано/не опубликовано/...) –

1

Это зависит от того, как устроена ваша база данных. Как правило, сообщение в блоге имеет дату, связанную с ним. Обычно вы можете запросить свою базу данных, чтобы получить список уникальных месяцев для каждого пользователя. Используете ли вы систему OSS, такую ​​как Wordpress, или что-то обычное? Можете ли вы дать представление о своей схеме?

+0

Я не использую никакого готового программного обеспечения, его просто таблицу mysql в блоге, а также столбец с указанием даты, а также идентификатор пользователя, поэтому я в настоящее время просто запрашиваю для всех блогов от этих пользователей, но я хочу показать столбец на правая сторона со ссылками на просмотр по месяцам. Я просто, хотя об этом проще всего, вероятно, будет какая-то математика, чтобы определить, сколько месяцев они были там с даты регистрации, которая находится в переменной сеанса – JasonDavis

Смежные вопросы