Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Dev tableau
:
table0018.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tableau HTML</title> <style> .table-container { width: 100%; overflow-x: auto; } table { border-collapse: separate; /* Empêche la fusion des bordures */ border-spacing: 0; width: 100%; table-layout: auto; /* Permet aux colonnes de s'ajuster automatiquement */ } th, td { padding: 5px; text-align: center; border: 1px solid black; /* Bordure par défaut pour toutes les cellules */ box-sizing: border-box; /* Inclut la bordure dans la largeur de la cellule */ } /* Fixer la largeur de la première colonne et lui donner une bordure visible */ .fixed-column { position: sticky; left: 0; background: white; z-index: 1; border-left: 2px solid black; /* Bordure gauche visible */ border-right: 1px solid black; /* Bordure droite visible */ padding-left: 10px; padding-right: 10px; width: 222px; /* Largeur fixée à 222px pour la première colonne */ min-width: 222px; /* Empêche la réduction de la largeur */ } /* Spécifier la bordure de la première colonne de chaque ligne */ td:first-child { border-left: 2px solid black; /* Maintient la bordure gauche de la première cellule */ } /* Style pour les cellules avec valeur 1 */ .active-cell { background-color: green; color: white; } /* Rendre la deuxième colonne (total) non cliquable */ .total-column { background-color: #f0f0f0; pointer-events: none; /* Désactive le clic sur cette colonne */ } </style> </head> <body> <div class="table-container"> <table> <?php $rows = ['toto', 'titi', 'lulu']; $columns = 200; foreach ($rows as $row) { echo "<tr><td class='fixed-column' onclick='editCell(this)'>$row</td>"; // Ajouter la colonne "total" après la première colonne, et la rendre non cliquable echo "<td class='total-column'>0</td>"; // Colonne total initialisée à 0 // Ajouter les autres colonnes for ($i = 0; $i < $columns; $i++) { echo "<td onclick='toggleCell(this, this.parentElement)'>0</td>"; } echo "</tr>"; } ?> </table> </div> <script> // Fonction pour éditer la première colonne function editCell(cell) { // Si la cellule est déjà en mode édition, ne rien faire if (cell.querySelector("input")) return; // Créer un champ input pour rendre la cellule éditable var input = document.createElement("input"); input.type = "text"; input.value = cell.innerText; // Mettre la valeur actuelle de la cellule cell.innerHTML = ''; // Vider la cellule cell.appendChild(input); // Donner le focus au champ input input.focus(); // Enregistrer la valeur lorsque l'utilisateur appuie sur "Entrée" input.addEventListener('keydown', function(event) { if (event.key === 'Enter') { cell.innerText = input.value; // Sauvegarder la valeur } }); // Fermer l'édition lorsque l'utilisateur clique en dehors de la cellule input.addEventListener('blur', function() { cell.innerText = input.value; // Sauvegarder la valeur }); } // Fonction pour gérer le clic dans les cellules des autres colonnes et calculer le total function toggleCell(cell, row) { if (cell.innerText === '0') { cell.innerText = '1'; cell.classList.add('active-cell'); // Appliquer le fond vert et la couleur du texte } else { cell.innerText = '0'; cell.classList.remove('active-cell'); // Réinitialiser le fond à blanc } // Calculer le total pour la ligne updateTotal(row); } // Fonction pour calculer et mettre à jour la colonne "total" function updateTotal(row) { let total = 0; // On commence à la 3ème cellule (index 2) et on additionne les valeurs des cellules de la ligne for (let i = 2; i < row.cells.length; i++) { let cellValue = parseInt(row.cells[i].innerText); if (!isNaN(cellValue)) { total += cellValue; } } // Mettre à jour la cellule de la colonne "total" (index 1) row.cells[1].innerText = total; } </script> </body> </html>