За последние 24 часа нас посетили 193444 программиста и 2147 роботов. Сейчас ищут 2213 программистов ...

Нужно немного дополнить скрипт

Тема в разделе "PHP для новичков", создана пользователем klon5555, 16 янв 2012.

  1. klon5555

    klon5555 Активный пользователь

    С нами с:
    11 дек 2010
    Сообщения:
    74
    Симпатии:
    0
    Имеем скрипт календаря:
    Код (Text):
    1. <?
    2. $NameMonth = array('Я&nbsp;н&nbsp;в&nbsp;а&nbsp;р&nbsp;ь', 'Ф&nbsp;е&nbsp;в&nbsp;р&nbsp;а&nbsp;л&nbsp;ь', 'М&nbsp;а&nbsp;р&nbsp;т', 'А&nbsp;п&nbsp;р&nbsp;е&nbsp;л&nbsp;ь', 'М&nbsp;а&nbsp;й', 'И&nbsp;ю&nbsp;н&nbsp;ь', 'И&nbsp;ю&nbsp;л&nbsp;ь', 'А&nbsp;в&nbsp;г&nbsp;у&nbsp;с&nbsp;т', 'С&nbsp;е&nbsp;н&nbsp;т&nbsp;я&nbsp;б&nbsp;р&nbsp;ь', 'О&nbsp;к&nbsp;т&nbsp;я&nbsp;б&nbsp;р&nbsp;ь', 'Н&nbsp;о&nbsp;я&nbsp;б&nbsp;р&nbsp;ь', 'Д&nbsp;е&nbsp;к&nbsp;а&nbsp;б&nbsp;р&nbsp;ь');
    3. $DayInMonth = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    4. $WeekDays = array("","ПН","ВТ","СР","ЧТ","ПТ","СБ","ВС");
    5. function MyEventDay($arg='') {
    6.  return $arg;
    7. }
    8. if ( ($DayInMonth[1] % 4) == 0 ) $DayInMonth[1] = 29;
    9. $j = 1;
    10. $NumberFirstDay = date("w",mktime(0,0,0,date("m"),1,date("Y")));
    11. if ($NumberFirstDay == 0) $NumberFirstDay = 7;
    12. echo "<center><table cellspacing='4' cellpadding='5'><tr>";
    13. echo "<tr><td align='center' colspan='7' style='border: 1px solid black; color: black;'><b>".$NameMonth[date('n') - 1]."</b></td></tr>";
    14. for ($i = 1; $i <= 7; $i++) {
    15.   echo "<td align='center' style='border: 1px solid black'>";
    16.   if (($i == 7) || ($i == 6)) {echo "<font color='red'>$WeekDays[$i]";
    17.     } else { echo "<font color='black'>$WeekDays[$i]";
    18.     }
    19.   echo "</td>";
    20. }
    21. echo "</tr><tr>";
    22. while ($j < $NumberFirstDay) {
    23.    echo "<td align='center' style='border: 1px solid black; color: silver;'>".$j."</td>";
    24.    $j++;
    25.    }
    26. for ($i = 1; $i <= $DayInMonth[date("m") - 1]; $i++)  {
    27.   if ($j == 0) echo "<tr>\n";
    28.   echo $SetupColumns;
    29.   if ($i == date("d")) {
    30.         echo "<td align='center' style='border: 1px solid silver; color: black; background: gray;'";
    31.        } else {
    32.             echo "<td align='center' style='border: 1px solid black; color: black;'>";
    33.        }
    34.   if (($j == 7)||($j == 6)) {
    35.      echo "<font style='color: red;'>".MyEventDay($i)."</font>";
    36.      } else {
    37.          echo "<font style='color: black;'>".MyEventDay($i)."</font>";
    38.        }
    39.   echo "</td>\n";
    40.   if ($j == 7) {
    41.       echo "</tr>"; $j=1;
    42.     } else {$j++;}
    43. }
    44. echo "</table>";
    45. ?>
    При выводе он смотрится так:
    http://screen.ticno.com/index.php?image=vUrcHQsyX7Ms9vUqthnD.jpg

    Нужно добавить последние ячейки c цифрами следующего месяца в таком же стиле, как и первые 6
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    заказы на разовую работу размещаются в разделе "фриланс" какбэ.

    если вам нужна помощь, то опишите, что пробовал, что не получилось.
     
  3. klon5555

    klon5555 Активный пользователь

    С нами с:
    11 дек 2010
    Сообщения:
    74
    Симпатии:
    0
    Всё было настолько просто что в порыве проб и ошибок я нашел ответ:)
    Код (Text):
    1. while ($s < ($NumberFirstDay + $DayInMonth[date("m") - 1])) {
    2.    echo "<td align='center' style='border: 1px solid black; color: silver;'>".$ss."</td>";
    3.    $ss++;
    4.    if($ss>(7-$j+1)){$s=$NumberFirstDay + $DayInMonth[date("m") - 1];}
    5.    }
    Если кто-то может дополнить этот вариант, буду рад помощи:)
    Вроде работает идеально с любым количеством дней в месяце
     
  4. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    А если в месяце 32 дня, неужели тоже будет работать?
     
  5. klon5555

    klon5555 Активный пользователь

    С нами с:
    11 дек 2010
    Сообщения:
    74
    Симпатии:
    0
    Работает, но разве в месяце может быть 32 дня? :D
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы братья, чтоли?
     
  7. klon5555

    klon5555 Активный пользователь

    С нами с:
    11 дек 2010
    Сообщения:
    74
    Симпатии:
    0
    Братья по никам, не более :D
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    просто у тебя пятерки, и их четыре - на один меньше, чем пять.
    а у него семерки, и их шесть... нувыпонели