Автор Тема: Помогите разобраться с календарем для вывода новостей  (Прочитано 2201 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 3D-Dragon

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 161
  • +0/-0
  • 0
    • Просмотр профиля
    • http://wp-club.net
В статье "Рабочие инструменты сайтостроителя. Часть 2" есть пример вывода календаря для новостей.

Вот первый фрагмент:

****************************************************
Алгоритмы формирования календаря на указанный год и месяц не представляют секрета, обычно отсчет ведется от 1 января каждого года. Большое количество функций PHP упрощает многие операции по формированию, сравнению и преобразованию дат. Так, функция mktime(), которая потребуется при составлении календаря, позволяет преобразовать дату в ее внутренний формат, а функция date() - выделить любой фрагмент из даты или изменить ее формат. При создании раздела новостей на сайте следует не только вывести календарь, но и отобразить в нем актуальные данные, соответствующие содержимому таблицы. Иными словами, дни месяца, для которых заведены новости, должны ссылаться на соответствующий гипертекстовый файл (этот файл, как и всю страничку новостей, следует формировать автоматически). Сопоставить дни месяца и записи таблицы позволяет следующий фрагмент кода, в котором сначала создается массив из 31 элемента, затем он заполняется единичными значениями, если хотя бы одна новость занесена в таблицу, или нулевыми значениями, если таких новостей нет.

$days=array();
for ($k=0;$k<32;$k++) { $days[$k]=0; }
// отбираем даты, которые попадают в диапазон
// от 1 числа текущего месяца
// до 1 числа следующего месяца
$fd=date("Y-m-d", mktime(0,0,0,$month,1,$year));
$ld=date("Y-m-d", mktime(0,0,0,$month+1,1,$year));
$sql1="select *, dayofmonth(pdate) as dnum from news where (pdate>=\'$fd\' and pdate<\'$ld\') group by pdate";
$r=mysql_db_query(dbname, $sql1);
for ($i=0; $i{
$f=mysql_fetch_array($r);
$nday=$f[dnum];
$days[$nday]=1;
}

****************************************************

Вот второй фрагмент:
****************************************************
После инициализации массива $days[] можно составить функцию для формирования календаря для указанного года и месяца. Функция showcalendar() представлена ниже.

function showcalendar($amonth, $ayear, $adays)
{
$first=mktime(0,0,0,$amonth,1,$ayear);
$wd=date( "w", $first);
if ($wd==0) { $wd=7; }
$lastday=date( "d",mktime(0,0,0,$amonth+1,0,$ayear));
$cur=-$wd+1;
$pred=time()-86400;
$curday=(int)date( "d",$pred)+1;
$curyear=(int)date( "Y",$pred);
$curmonth=(int)date( "m",$pred);
$stat=0;
if ($curyear==$ayear and $curmonth==$amonth) { $stat=1; }

print "";

for ($k=0;$k<6;$k++) {
print "";
for ($i=0;$i<7;$i++ ) {
$cur++;
if (($cur<=0) || ($cur>$lastday) ) print "";
else
{
$mkd=date("Y-m-d", mktime(0,0,0,$amonth,$cur,$ayear));
if ($cur==$curday and $stat==1)
{ if ($adays[$cur]==0) print ""; else print "";}
else
{ if ($adays[$cur]==0) print ""; else print "";}
}
}
print "";
}
print "
 $cur$cur$cur$cur
\\n";
}

****************************************************

Собственно суть проблемы:
Календарь у меня выводиться но без ссылок в тех датах где есть записи в базе.

Я так понял, что первый фрагмент нужно как-то вставить во второй, но вот куда именно не пойму :(
Или может я не так думаю.
Помогите пож-та разобраться.
Всё в одном месте для начинающих и профессионалов
-= Web-Profi CLUB =-  Хостинг (бесплатный, платный, dedicated), Баннерная Сеть, Форум для web-мастеров

Оффлайн 3D-Dragon

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 161
  • +0/-0
  • 0
    • Просмотр профиля
    • http://wp-club.net
ТЕМА ЗАКРЫТА

я сам разобрался ...
Всё в одном месте для начинающих и профессионалов
-= Web-Profi CLUB =-  Хостинг (бесплатный, платный, dedicated), Баннерная Сеть, Форум для web-мастеров

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28