File "explore025.php"

Full Path: /home/analogde/www/react-native/2024_PHP_02_11_2024/explorer/explore025.php
File size: 3.66 KB
MIME-type: text/x-php
Charset: utf-8

<?php

// Connexion à la base de données
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "your_database_name";

$servername = "analogdepat.mysql.db";
$username = "analogdepat";
$password = "Un92pac007";
$dbname = "analogdepat";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Récupérer les données de la table
$sql = "SELECT name, element FROM lists_fichiers";
$result = $conn->query($sql);

$data = [];
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $name = $row['name'];
        $element = $row['element'];
        if (!isset($data[$name])) {
            $data[$name] = [];
        }
        $data[$name][] = $element;
    }
}

$conn->close();

// Convertir le tableau en JSON
$jsonData = json_encode($data);

function scanDirectory($directory) {
    $result = [];
    $files = scandir($directory);
    foreach ($files as $file) {
        if ($file !== '.' && $file !== '..') {
            $path = $directory . DIRECTORY_SEPARATOR . $file;
            if (is_dir($path)) {
                $result[] = [
                    'name' => $file,
                    'type' => 'directory',
                    'children' => scanDirectory($path)
                ];
            } else {
                $result[] = [
                    'name' => $file,
                    'type' => 'file',
                    'created' => date('Y-m-d H:i:s', filectime($path)),
                    'size' => filesize($path) // Ajouter la taille du fichier
                ];
            }
        }
    }
    return $result;
}

function displayTree($tree, $fileData, $level = 0) {
    foreach ($tree as $item) {
        if (isset($fileData[$item['name']])) {
            echo '<ul class="tree-item" style="margin-left: ' . ($level * 20) . 'px; list-style-type: none;">';
            echo '<li>';
            echo '<span class="toggle" onclick="toggleTree(this)">+</span>';

            echo '<span class="name"><i class="fas fa-check-circle green-icon"></i>' . htmlspecialchars($item['name']) .
            '<span class="file-size">' . formatSizeUnits($item['size']) . '</span>' . // Ajouter la taille du fichier
            '<span class="created-date">' . htmlspecialchars($item['created']) . '</span>'
            .'</span>';

            echo '<ul class="sub-list" style="display: none;">';
            foreach ($fileData[$item['name']] as $subElement) {
                echo '<li class="sub-element"><i class="fas fa-sitemap sub-element-icon"></i><span class="context-menu-trigger">' . htmlspecialchars($subElement) . '</span></li>';
            }
            echo '</ul>';
            echo '</li>';
            echo '</ul>';
        } else {
            echo '<div class="tree-item" style="margin-left: ' . ($level * 20) . 'px;">';
            echo '<span class="toggle" onclick="toggleTree(this)">' . ($item['type'] === 'directory' ? '+' : '') . '</span>';
            $iconClass = $item['type'] === 'directory' ? 'fas fa-folder directory-icon' : 'fas fa-file floppy-icon';
            echo '<span class="name"><i class="' . $iconClass . '"></i>' . htmlspecialchars($item['name']) . '</span>';
            if (isset($item['size'])) {
                echo '<span class="file-size">' . formatSizeUnits($item['size']) . '</span>'; // Ajouter la taille du fichier
            }
            if (isset($item['created'])) {
                echo '<span class="created-date">' . htmlspecialchars($item['created']) . '</span>';
            }
            if (isset($item['children'])) {
                echo '<div class="tree-children" style="display: none;">';
                displayTree($item['children'],