Как создать календарь на PHP с отображением рабочих (4 дня) и выходных (2 дня) дней?

Приветствую! Чем могу помочь?
  • 8 декабря 2023 г. 17:09
Ответы на вопрос 1
Привет! Для создания календаря на PHP с отображением рабочих и выходных дней, можно использовать функции и операторы PHP для работы с датами.

Вот пример кода, который создает календарь на текущий месяц с отображением рабочих и выходных дней:

```php
<?php
// Определение рабочих и выходных дней
$workingDays = [1, 2, 3, 4]; // Понедельник, вторник, среда, четверг
$weekendDays = [5, 6]; // Пятница, суббота

// Получение текущего месяца и года
$month = date('n');
$year = date('Y');

// Получение количества дней в текущем месяце
$daysInMonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);

// Создание таблицы календаря
echo '<table>';

// Создание заголовка таблицы
echo '<tr>';
echo '<th>Пн</th>';
echo '<th>Вт</th>';
echo '<th>Ср</th>';
echo '<th>Чт</th>';
echo '<th>Пт</th>';
echo '<th>Сб</th>';
echo '<th>Вс</th>';
echo '</tr>';

// Создание строк с днями месяца
for ($day = 1; $day <= $daysInMonth; $day++) {
    // Определение типа дня (рабочий или выходной)
    if (in_array(date('N', strtotime($year . '-' . $month . '-' . $day)), $workingDays)) {
        $type = 'working';
    } elseif (in_array(date('N', strtotime($year . '-' . $month . '-' . $day)), $weekendDays)) {
        $type = 'weekend';
    } else {
        $type = 'other';
    }

    // Добавление ячейки с днем в таблицу
    echo '<td class="' . $type . '">' . $day . '</td>';

    // Если текущий день - воскресенье, переход на новую строку
    if (date('N', strtotime($year . '-' . $month . '-' . $day)) == 7) {
        echo '</tr><tr>';
    }
}

// Завершение таблицы
echo '</table>';
?>
```

В этом примере каждый день месяца проверяется на принадлежность к рабочим или выходным дням. Если текущий день относится к рабочим дням, то в таблицу добавляется ячейка с классом "working". Если текущий день относится к выходным дням, то в таблицу добавляется ячейка с классом "weekend". В остальных случаях ячейка добавляется с классом "other".

Можно использовать стили CSS, чтобы стилизовать таблицу и ячейки в зависимости от их классов. Например:

```css
table {
    width: 100%;
    border-collapse: collapse;
}

th, td {
    padding: 5px;
    text-align: center;
    border: 1px solid #000;
}

th {
    background: #ccc;
}

td.working {
    background: #fff;
}

td.weekend {
    background: #f00;
}

td.other {
    background: #eee;
}
```

Это лишь базовый пример, и вы можете доработать код и стили в соответствии с вашими требованиями.
Похожие вопросы