|
|
|
| Функция календаря - код весь потому как кому может пригодиться. Взято с сайта денвера.
<?
function my_makeCal($year, $month)
{
//массив хранящий в себе кол-во дней в каждом месяце кроме февраля
$day_amount = array(1 => '31', 3 => '31', 4 => '30', 5 => '31', 6 => '30',
7 => '31', 8 => '31', 9 => '30', 10 => '31', 11 => '30',
12 => '31' );
//если сейчас любой месяц кроме февраля
if ($month!==2)
$day_in_month = $day_amount[$month];
else
{
if ($year % 4==0) $day_in_month = 29;//високосный год
else $day_in_month = 28;
}
// Получаем номер дня недели для 1 числа месяца.
// Получаем номер дня недели для последнего дня месяца.
// Корректируем их, чтобы воскресенье соответствовало числу 7, а не числу 0.
$wday = JDDayOfWeek(GregorianToJD($month, 1, $year), 0);
$wday_end_month = JDDayOfWeek(GregorianToJD($month, $day_in_month, $year), 0);
if ($wday == 0) $wday = 7;
if ($wday_end_month == 0) $wday_end_month = 7;
//Заполняем массив календаря значениями от 1 до последнего числа месяца
$cal = range(1, $day_in_month);
//если первое число не совпадает с понедельником
if ($wday > 1)
{
$cal_b = array_fill(0, $wday-1, '');//заполняет массив пустыми значениями
$cal = array_merge($cal_b,$cal);//склеиваем массив дат и пустышку
}
//если последнее число не совпадает с воскресеньем
if($wday_end_month < 7)
{
$cal_e = array_fill(0, 7-$wday_end_month, '');//заполняет массив пустыми значениями
$cal = array_merge($cal, $cal_e);//склеиваем массив дат и пустышку
}
return $cal;
}
$mon=date("n") ;
$mon=trim($mon);
//echo $mon;
$cal = my_makeCal(2005, $mon);
//делит массив на отрезки по семь дней
$cal = array_chunk($cal, 7);
?>
<!-- Шаблон вывода календаря. -->
<table border=1>
<tr>
<td>Пн</td>
<td>Вт</td>
<td>Ср</td>
<td>Чт</td>
<td>Пт</td>
<td>Сб</td>
<td style="color:red">Вс</td>
</tr>
<!-- цикл по строкам -->
<?foreach ($cal as $row) {?>
<tr>
<!-- цикл по столбам -->
<?foreach ($row as $i=>$v) {?>
<!-- воскресенье - "красный" день -->
<td style="<?=$i==6? 'color:red' : ''?>">
<?=$v? $v : " "?>
</td>
<?}?>
</tr>
<?}?>
</table>
|
----------------------------------------------------------------------------------------------------------------------------
Задача .
Нужно сделать чтобы дни введенные через запятую в базу mysql (например 5 ,6 ,7 ,8 ,16 ) и потом полученные в виде массива $data[body] раскрашивались в календаре другим цветом - эти дни критические :) - например все в запое.
эти дни я получил :
$op=$data[body];
$op= explode( ',', $op); //режем на части без запятой для получения 5 6 7 8 16
foreach ($op as $op) {
echo $op."\n"; // выводиться 5 6 7 8 16
}
|
Как их завязать где в коде календаря (<!-- воскресенье - "красный" день -->) например эти дни 5 6 7 8 16 выделялись синим цветом...
p.s .Ну и впридачу - как сделать при нажатии на ячейку календаря выбранное число вносилось в форму отправки- видел только на java | |
|
|
|
|
|
|
|
для: oppo
(16.09.2005 в 18:54)
| | ну докумекал так надо
<td style="<?echo
$i==6? 'color:red' : '' ;
$op=$data[body];
$op= explode( ',', $op);
if(sizeof($op)>0){
for($j=0;$j<sizeof($op);$j++){
echo $v==$op[$j] ? 'color:blue;background: #FFFF00' : '' ;
}
}
|
| |
|
|
|