File "test003.php"
Full Path: /home/analogde/www/Resize_Quashai/New folder/test003.php
File size: 6.44 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>