Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Emile
:
arbre_multi03.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php // Configuration de la connexion à la base de données //$host = 'localhost'; // ou l'adresse de ton serveur //$user = 'root'; // ton nom d'utilisateur MySQL //$password = ''; // ton mot de passe MySQL //$database = 'file_management'; $host = "analogdepat.mysql.db"; $user = "analogdepat"; $password = "Un92pac007"; $database = "analogdepat"; // Connexion à la base de données $conn = new mysqli($host, $user, $password, $database); // Vérification de la connexion if ($conn->connect_error) { die("La connexion a échoué : " . $conn->connect_error); } // Récupération des fichiers et de leurs versions $query = "SELECT f.id, f.filename, v.version FROM fichiers f LEFT JOIN versions v ON f.id = v.file_id"; $result = $conn->query($query); $multidimensionalArray = []; // Organisation des données en tableau multidimensionnel if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $filename = $row['filename']; $version = $row['version']; // Vérifie si le fichier est déjà dans le tableau if (!isset($multidimensionalArray[$filename])) { $multidimensionalArray[$filename] = [ 'fichier' => $filename, 'children' => [] ]; } // Ajoute la version si elle existe if ($version) { $multidimensionalArray[$filename]['children'][] = [ 'fichier' => $version ]; } } } // Conversion du tableau en JSON $jsonData = json_encode(array_values($multidimensionalArray)); // Ferme la connexion à la base de données $conn->close(); ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Tree View</title> <style> .children { display: none; margin-left: 20px; } .folder { cursor: pointer; font-weight: bold; } </style> </head> <body> <div id="treeView"></div> <script> // Données JSON provenant de PHP const data = <?php echo $jsonData; ?>; // Fonction pour générer l'arbre function generateTree(data) { const ul = document.createElement('ul'); data.forEach(item => { const li = document.createElement('li'); li.className = 'folder'; li.textContent = item.fichier; const childrenUl = document.createElement('ul'); childrenUl.className = 'children'; item.children.forEach(child => { const childLi = document.createElement('li'); childLi.textContent = child.fichier; childrenUl.appendChild(childLi); }); li.appendChild(childrenUl); ul.appendChild(li); // Ajouter un gestionnaire d'événements pour le clic sur le nom du fichier seulement li.addEventListener('click', function(event) { event.stopPropagation(); // Empêche la propagation de l'événement // Toggle l'affichage des enfants uniquement si l'élément cliqué est le nom du fichier if (event.target === li) { childrenUl.style.display = childrenUl.style.display === 'none' || childrenUl.style.display === '' ? 'block' : 'none'; } }); }); return ul; } // Générer l'arbre et l'ajouter à la page document.getElementById('treeView').appendChild(generateTree(data)); </script> </body> </html>