Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Оформление архива новостей в виде календаря


Автор: -=Ustas=- 1.5.2005, 15:05
Привет всем!
Задача такая. Есть таблица с новостями, и таблица с датой этих новостей. Дата в формате "yyyyyy-mm-dd". Как сделать для навигации по архиву типа календарик, при этом чтобы в календаре была выделена ячейка с той датой, на которую была опубликована новость, и при этом была ссылкой на эту новость? И еще с помесячной промоткой. Немного свой замысел набросал на листик, типа такого:
http://www.andropov-cbs.ru/sample.jpg
Каким образом реализовать это все?
Заранее сеньки.

Автор: Axxent 1.5.2005, 19:15
Охх... Чтобы выделять это все ссылками, придется пробегать циклом по дням и если такой день есть в базе, то делать ссылку (только не делайте запрос по каждому разу, лучше mysql_fetch_array и in_array, от греха подальше). Помесячную прокрутку реализовать проще чем кажется - выделяем только те новости, где месяц равен тому-то. Вообще день, месяц и год в этом случае я разбил бы на разные ячейки в БД. Проще работать чем с типом date. Правда с определением дня недели будет гемор - придется приводить к строке и вычислять день. Хотя я бы привел к timestamp и с помощью date определил день =)

Помог? smile

Автор: -=Ustas=- 1.5.2005, 20:27
Примерчик мона?

Автор: Axxent 3.5.2005, 14:43
Ща попробую наваять... навскидку, так что не суди строго =)

Допустим есть таблица структуры
Код

CREATE TABLE `news_in_calendar` (
  `newsid` int(11) NOT NULL auto_increment,
  `content` text NOT NULL,
  `day` int(11) NOT NULL,
  `month` int(11) NOT NULL,
  `year` int(11) NOT NULL,
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Тогда изобразим нечто вроде того... (для одного месяца)
Код

// сначала делаем запрос по новостям
$res=mysql_query("select day from news_in_calendar where month='$month' and year='$year'"); //$month и $year задать изначально.
while(list($d)=mysql_fetch_row($res))  $days[]=$d;
// Здесь я не уверен, что так лучше всего, но больше ничего в голову не лезет =)
$day=1;
do {
if(in_array($d, $days)) echo "<span class="yacheika"><a href=\"http://link_to_news\">".$day++."</a></span>";
else echo "<span class="yacheika">".$day++."</span>";
} while($day<$days_in_month);
// $days_in_month - это количество дней в данном месяце


Вотъ. Это конечно только пример, чтобы показать как я себе это представляю =) Контроль над количеством дней в конкретном месяце я не писал, слишком много вариантов. Месяцы переставлять я думаю понятно как - просто делаем выборку по другом месяцу.

Автор: -=Ustas=- 4.5.2005, 13:57
Хорошо, поюзаю и свои размышления, если что, исходники выкину сюда.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)