File "test003.php"

Full Path: /home/analogde/www/Softs/New folder/test003.php
File size: 6.27 KB
MIME-type: text/x-php
Charset: utf-8

<?php
echo "Zoulou";

// Définir les jours fériés
$fetes = [
    '2025-01-01', '2025-04-01', '2025-05-01', '2025-05-08', '2025-05-29', '2025-06-09', '2025-07-14',
    '2025-08-15', '2025-11-01', '2025-11-11', '2025-12-25'
];

// Fonction pour générer les dates de l'année 2025 en excluant les jours fériés
function getDatesForYear($startDate, $endDate, $fetes) {
    $dates = [];
    $currentDate = strtotime($startDate);
    $endDate = strtotime($endDate);

    while ($currentDate <= $endDate) {
        $date = date('Y-m-d', $currentDate);
        if (!in_array($date, $fetes)) {  // Exclure les jours fériés
            $dates[] = $date;
        }
        $currentDate = strtotime('+1 day', $currentDate);
    }
    return $dates;
}

$dates = getDatesForYear('2025-01-01', '2025-12-31', $fetes);
?>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tableau Dynamique</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        .editable {
            cursor: pointer;
        }

        .cell {
            cursor: pointer;
        }

        .cell.selected {
            background-color: #D3D3D3; /* couleur de fond quand la cellule est sélectionnée */
        }

        .month-color {
            background-color: #f2f2f2; /* Couleur pour le premier mois */
        }

        .month-color-alternate {
            background-color: #e6f7ff; /* Couleur pour le deuxième mois */
        }
    </style>
</head>
<body>
    <div class="container mt-5">
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>Date</th>
                    <?php foreach ($dates as $date): ?>
                        <th class="date-cell"><?= date('d/m/Y', strtotime($date)); ?></th>
                    <?php endforeach; ?>
                </tr>
            </thead>
            <tbody id="tableBody">
                <!-- Aucune ligne de données au départ, juste l'en-tête avec les dates -->
            </tbody>
        </table>
        <button class="btn btn-primary" onclick="addRow()">Add</button>
    </div>

    <script>
        // Fonction pour éditer la cellule
        function editCell(cell) {
            if (cell.isContentEditable) return;
            cell.contentEditable = true;
            cell.focus();
        }

        // Fonction pour sortir du mode édition (quand on clique ailleurs ou appuie sur Entrée)
        document.addEventListener('click', function(e) {
            if (!e.target.closest('td.editable')) {
                let editableCells = document.querySelectorAll('td.editable[contenteditable="true"]');
                editableCells.forEach(cell => {
                    cell.contentEditable = false;
                });
            }
        });

        document.addEventListener('keydown', function(e) {
            if (e.key === 'Enter') {
                let editableCells = document.querySelectorAll('td.editable[contenteditable="true"]');
                editableCells.forEach(cell => {
                    cell.contentEditable = false;
                });
            }
        });

        // Fonction pour basculer la valeur des cellules de la date
        function toggleCell(cell) {
            if (cell.innerText === '0') {
                cell.innerText = '1';
                cell.classList.add('selected');
            } else {
                cell.innerText = '0';
                cell.classList.remove('selected');
            }
        }

        // Fonction pour ajouter une nouvelle ligne
        function addRow() {
            let tableBody = document.getElementById('tableBody');
            let newRow = document.createElement('tr');
            newRow.classList.add('bloc_definition');

            // Première cellule "To define"
            let newCell = document.createElement('td');
            newCell.classList.add('editable');
            newCell.textContent = 'To define';
            newCell.setAttribute('onclick', 'editCell(this)');
            newRow.appendChild(newCell);

            // Autres cellules avec valeur "0"
            let cells = document.querySelectorAll('thead th'); // Sélectionner les cellules d'en-tête
            cells.forEach(function() {
                let newCell = document.createElement('td');
                newCell.classList.add('cell');
                newCell.textContent = '0';
                newCell.setAttribute('onclick', 'toggleCell(this)');
                newRow.appendChild(newCell);
            });

            tableBody.appendChild(newRow);
        }

        // Fonction pour appliquer une couleur différente pour chaque mois
        function applyMonthColor() {
            const headerCells = document.querySelectorAll('.date-cell');
            let currentMonth = null;
            let colorToggle = 0; // Variable pour alterner entre les couleurs

            headerCells.forEach(function(cell, index) {
                // Extraire la date de la cellule
                let dateText = cell.innerText;
                if (!dateText) return; // Ignorer les cellules vides

                let date = new Date(dateText);
                let monthIndex = date.getMonth(); // Récupérer le mois

                // Si on passe à un autre mois, on réinitialise le compteur pour la couleur
                if (monthIndex !== currentMonth) {
                    colorToggle = 0;
                    currentMonth = monthIndex;
                }

                // Appliquer la couleur alternée au mois en cours
                if (colorToggle % 2 === 0) {
                    cell.classList.add('month-color');
                    cell.classList.remove('month-color-alternate');
                } else {
                    cell.classList.add('month-color-alternate');
                    cell.classList.remove('month-color');
                }
                colorToggle++;
            });
        }

        // Appliquer la couleur au chargement de la page
        window.onload = function() {
            applyMonthColor();
        };
    </script>
</body>
</html>