File "arbre_multi02.php"

Full Path: /home/analogde/www/2024_PHP_24_11_2024/arbre_multi02.php
File size: 3.49 KB
MIME-type: text/x-php
Charset: utf-8

<?php

function query()
{
    $dbHost = "analogdepat.mysql.db";   
    $dbUsername = "analogdepat"; 	   
    $dbPassword = "Un92pac007";	    
    $dbName = "analogdepat";	
    $mysqli = new mysqli( $dbHost ,  $dbUsername ,  $dbPassword , $dbName);

    if ($mysqli -> connect_errno) 
    {
      echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
      exit();
    }

    $sql = "SELECT * FROM base_fichier"; // ORDER BY Lastname";
    $result = $mysqli -> query($sql);
   
    while($obj = mysqli_fetch_assoc($result))
    {
        echo " **** " .$obj["id"] ." " .$obj["name"] ." " .$obj["nombre_revision"] ." " .$obj["courante"] ." " .$obj["identifiant"];
        echo "<br>";
    }

    $result -> free_result();
    $mysqli -> close();
}

    query();


// Exemple de fichiers et de leurs versions
$files = [
    'document.txt' => ['version1', 'version2', 'version3'],
    'image.png' => ['version1', 'version2'],
    'script.php' => ['version1']
];

// Initialisation du tableau multidimensionnel
$multidimensionalArray = [];

foreach ($files as $file => $versions) {
    // Création de l'entrée pour chaque fichier
    $entry = [
        'fichier' => $file,
        'children' => []
    ];

    // Ajout des versions au tableau children
    foreach ($versions as $version) {
        $entry['children'][] = [
            'fichier' => $version
        ];
    }

    // Ajout de l'entrée au tableau principal
    $multidimensionalArray[] = $entry;
}

// Conversion du tableau en JSON
$jsonData = json_encode($multidimensionalArray);
?>

<!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>