Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Календарь - красить в синий цвет.Критические дни.
 
 автор: oppo   (16.09.2005 в 18:54)   письмо автору
 
 

Функция календаря - код весь потому как кому может пригодиться. Взято с сайта денвера.

 <? 
function my_makeCal($year$month)
{
        
//массив хранящий в себе кол-во дней в каждом месяце кроме февраля
        
$day_amount = array(=> '31'=> '31'=> '30'=> '31'=> '30',
                        
=> '31'=> '31'=> '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($month1$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(07-$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($cal7);

?>

<!-- Шаблон вывода календаря. -->
<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 "&nbsp;"?>
        </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 в 23:44)   письмо автору
 
   для: oppo   (16.09.2005 в 18:54)
 

ну докумекал так надо

        <td style="<?echo 
            
        
$i==6'color:red' ''  ;

        
$op=$data[body];
$opexplode','$op);
        if(
sizeof($op)>0){ 
   for(
$j=0;$j<sizeof($op);$j++){ 
     echo      
$v==$op[$j]     ? 'color:blue;background: #FFFF00' ''    ;
   } 
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования