PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
LEONeso
Отправлено: 18 Января, 2011 - 09:34:01
Посетитель
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010
Откуда: Россия, Москва
Помог: 1 раз(а)
Помогите понять, как пометить выходные во всём месяце.
date()
d - день
t - кол-во дней в месяце
w - 0 - ВС, 6 - СБ
m - месяц
мне казалось, что типа что-то:
где 2015 год 01 месяц и 02 день.
выдает 6 на деле оказалось 1970 08 22 и 6 день недели
--
Как я понял, второй аргумент timestamp - т.е. даёт возможность прибавлять секунды или минуты к начальному времени.
Что-то тут написано - ничего не понял.(Отредактировано автором: 18 Января, 2011 - 10:42:20)
-----Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
Саныч
Отправлено: 18 Января, 2011 - 13:02:28
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010
Откуда: Украина, Запорожье
Помог: 62 раз(а)
вот накидал по быстрому календарь на текущий месяц...
выделение выходных происходит в 10 строке
PHP:
скопировать код в буфер обмена
echo '<table><tr>' ;
for ( $m = mktime ( 0
, 0
, 0
, date ( 'n' ) , 1
, date ( 'Y' ) ) ; $m < mktime ( 0
, 0
, 0
, date ( 'n' ) + 1
, 1
, date ( 'Y' ) ) ; $m += 86400
) {
if ( date ( 'j' , $m ) == 1
&& date ( 'w' , $m ) != 1
) {
for ( $st = $days - ( date ( 'w' , $m ) == 0 ? 7
: date ( 'w' , $m ) ) + 2 ; $st <= $days ; $st ++ ) echo '<td><i>' . $st . '</i></td>' ;
}
echo '<td>' . ( ( date ( 'w' , $m ) == 0
|| date ( 'w' , $m ) == 6 ) ?
'<b>' . date ( 'j' , $m ) . '</b>' : date ( 'j' , $m ) ) . '</td>' ; if ( date ( 'j' , $m ) == date ( 't' , $m ) && date ( 'w' , $m ) == 0
) echo '</tr>' ; for ( $st = 1 ; $st <= 7
- date ( 'w' , $m ) ; $st ++ ) echo '<td><i>' . $st . '</i></td>' ; elseif ( date ( 'w' , $m ) == 0
) echo '</tr><tr>' ; }
echo '</tr></table>' ;
-----Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Мелкий
Отправлено: 18 Января, 2011 - 13:08:55
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009
Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Ну коль такое дело - мой календарик. Оформлен в виде отдельного скрипта для аякса, ждущего на входе год и месяц, для которых и рисовать календарь.
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?
//если данные неверные или отсутствуют - берём текущие
if ( isset ( $_GET [ 'time' ] ) ) $time = intval ( $_GET [ 'time' ] ) ; else {
if ( $cmonat == '' ) $cmonat = date ( "m" ) ; if ( $cyear == '' ) $cyear = date ( "Y" ) ; $time = mktime ( 0
, 0
, 0
, $cmonat , 1
, $cyear ) ; }
list ( $dayofmonth , $cmonat , $cyear , $firstday ) = explode ( " " , date ( "t m Y w" , $time ) ) ; //$firstday = date("w",mktime(0,0,0,$cmonat,1,$cyear)); //если понадобится ещё выделять _этот_ день - то придётся раскомментировать
if ( $firstday == 0) $firstday = 7 ; //воскресеньем день кончается
$monats = array ( "нулябрь" , "январь" ,
"февраль" ,
"март" ,
"апрель" ,
"май" ,
"июнь" ,
"июль" ,
"август" ,
"сентябрь" ,
"октябрь" ,
"ноябрь" ,
"декабрь" ) ;
?>
<table class="calendar" border="1">
<tr>
<th colspan="7" class="head">
<a onClick="ajax('/calendar/<?PHP echo $cmonat - 1 , "/" , $cyear ; ?> ', 'jQueryCalendar')">«</a>
<?PHP echo $monats [ intval ( $cmonat ) ] ; ?> <a onClick="ajax('/calendar/<?PHP echo $cmonat + 1 , "/" , $cyear ; ?> ', 'jQueryCalendar')">»</a><br>
<a onClick="ajax('/calendar/<?PHP echo $cmonat , "/" , $cyear - 1 ; ?> ', 'jQueryCalendar')">«</a>
<?PHP echo $cyear ; ?> года
<a onClick="ajax('/calendar/<?PHP echo $cmonat , "/" , $cyear + 1 ; ?> ', 'jQueryCalendar')">»</a>
</th>
</tr>
<tr class="weekhead"><td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td><td class="weekend">Сб</td><td class="weekend">Вс</td></tr>
<?
for ( $day = 1 ; $day <= $dayofmonth ; ) {
echo "<tr>" ;
for ( $i = 1 ; $i <= 7 ; $i ++ ) {
echo "<td" , ( $i > 5 ?' class="weekend"' : "" ) , ">" ;
if ( ( $day != 1 && $day <= $dayofmonth ) || ( $day == 1 && $i == $firstday ) ) {
echo $day ;
$day ++;
}
echo "</td>" ;
}
echo "</tr>\n " ;
}
?>
</table>
(Отредактировано автором: 18 Января, 2011 - 13:09:20)
LEONeso
Отправлено: 18 Января, 2011 - 16:19:39
Посетитель
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010
Откуда: Россия, Москва
Помог: 1 раз(а)
asik , сразу понял, что это то, что мне надо =) Спасибо.
или же функция
PHP:
скопировать код в буфер обмена
function weekend ( $date_my ) { //дата типа: date(".m.Y") или ".02.2010"
echo $i . $date_my . ' - ' ;
if ( $weekend == 0 || $weekend == 6) { echo 'выходной' ; } else { echo 'будни' ; }
echo '<br>' ;
}
}
Вызов функции на сегодняшнюю дату и на выбранную:
результат работы скрипта/функции: от 18.01.2011
Спойлер (Отобразить ) 1.01.2011 - выходной
2.01.2011 - выходной
3.01.2011 - будни
4.01.2011 - будни
5.01.2011 - будни
6.01.2011 - будни
7.01.2011 - будни
8.01.2011 - выходной
9.01.2011 - выходной
10.01.2011 - будни
11.01.2011 - будни
12.01.2011 - будни
13.01.2011 - будни
14.01.2011 - будни
15.01.2011 - выходной
16.01.2011 - выходной
17.01.2011 - будни
18.01.2011 - будни
19.01.2011 - будни
20.01.2011 - будни
21.01.2011 - будни
22.01.2011 - выходной
23.01.2011 - выходной
24.01.2011 - будни
25.01.2011 - будни
26.01.2011 - будни
27.01.2011 - будни
28.01.2011 - будни
29.01.2011 - выходной
30.01.2011 - выходной
31.01.2011 - будни
возможна и такая простая функция: вывод 0 и 1 - где 1 это выходной
PHP:
скопировать код в буфер обмена
function weekend ( $date_my ) { //дата типа: date("d.m.Y") или "19.02.2011"
if ( $weekend == 0 || $weekend == 6) { return '1' ; } else { return '0' ; } //1 выходной, 0 будни
}
echo weekend( '19.02.2011' ) ;
Саныч , Мелкий , Вам тоже спасибо за труд, но цель проще чем календарь = (Отредактировано автором: 19 Января, 2011 - 08:56:27)
-----Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB