Афиша (вывод недели)

LEOnidUKG
На сайте с 25.11.2006
Offline
1775
646

Требуется афиша т.е. вывод события на неделю.

Фишка заключается в том, что можно листать на 1 неделю вперёд и на сколько угодно назад ессесно.

Жалкие попытки прикрутить функцию:

function search_week($time,$month,$year,$day_of_week,$which) {

$dt = $day_of_week+7*$which-6-date('w',mktime(0,0,0,$month,1,$year));
if (date($time,mktime(0,0,0,$month,1,$year))<=$day_of_week){
$what_u_need=date("m-d-Y", mktime(0,0,0,$month,$dt,$year));
}
else
{
$what_u_need=date("m-d-Y", mktime(0,0,0,$month,$dt+7,$year));
}
return $what_u_need;

}

не увенчались успехом т.к. нужно месяц задавать.

Т.е. если грубо говоря мне нужно:

Я знаю номер недели, например 14 и год, мне нужно выдать числа с понедельника по воскресенье включающие месяц.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
malls
На сайте с 08.08.2005
Offline
255
#1

Не понял что значит "включающие месяц", в остальном проблем то нет особых.

$week = 14;

$year = 2010;

$day_of_year = $week * 7;

дальше в общем функция с обычными календарными преобразованиями. Можно даже timestamp подключить ибо timestamp от заданной даты найти реально strtotime() , а дальше +/- недельный сдвиг.

Или я не понял чего-то?

I
На сайте с 08.04.2010
Offline
0
#2

Попробуй так.

function  WeekDates($year, $week){

// Высокосный год или нет
$L = date("L", mktime(1,1,1,1,1, $year)); // единицы чтобы получить именно этот год
$months = array(31, 28+$L, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
// Номер недели * 7 дней
$total_days = ($week-1)*7; // -1 чтобы получить именно нужную неделю
$i = 0;
while($sum < $total_days){
$sum += $months[$i++];
}
// Всего дней в этих месяцах:
$sum -= $months[$i-1];
// Номер месяца
$month = $i;
// Один из дней в этой неделе
$day = $total_days - $sum;
// День недели этого дня
$day_of_week = date("w", mktime(0,0,0, $month, $day, $year));
// Если это воскресенье
if ($day_of_week==0) $day_of_week=7;
// Получаем начало недели
$day = $day - ($day_of_week - 1) ;
$dates = array();
$dates['start'] = date("Y-m-d", mktime(0,0,0, $month, $day, $year));
$dates['end'] = date("Y-m-d", mktime(1,1,1, $month, $day+6, $year));
return $dates;
}
LEOnidUKG
На сайте с 25.11.2006
Offline
1775
#3
malls:
Не понял что значит "включающие месяц", в остальном проблем то нет особых.
$week = 14;
$year = 2010;
$day_of_year = $week * 7;
дальше в общем функция с обычными календарными преобразованиями. Можно даже timestamp подключить ибо timestamp от заданной даты найти реально strtotime() , а дальше +/- недельный сдвиг.
Или я не понял чего-то?

А бд забиваются события по датам. Нужно вывести все события на текущей и следующей недели + вывод всех предыдущих недель.

Вывод предоставляется так:

На этой недели: 05.04.2010 - 11.04.2010 и выводить события.

Проблема именно в выводе 04 месяца :)

LEOnidUKG добавил 08.04.2010 в 14:03

iSeo, благодарю, помоему то что нужно. Не могу поставить плюсик т.к. сегодня у Вас была регистрация :( Ну это вопрос времени :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий