File "explorateur09.php"
Full Path: /home/analogde/www/explorer/explorateur09.php
File size: 5.18 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);
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Tree View</title>
<style>
.tree-item {
cursor: pointer;
}
.toggle {
display: inline-block;
width: 20px;
text-align: center;
}
.name {
display: inline-block;
}
.tree-children {
margin-left: 20px;
}
.sub-list {
margin-left: 20px;
}
.sub-element {
margin-left: 20px;
}
.tree-item ul {
list-style-type: none;
padding: 0;
}
.context-menu {
display: none;
position: absolute;
background-color: white;
border: 1px solid #ccc;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
z-index: 1000;
}
.context-menu ul {
list-style-type: none;
padding: 0;
margin: 0;
}
.context-menu ul li {
padding: 10px;
cursor: pointer;
}
.context-menu ul li:hover {
background-color: #f0f0f0;
}
</style>
<script>
const fileData = <?php echo $jsonData; ?>;
function toggleTree(element) {
const children = element.nextElementSibling.nextElementSibling;
if (children && children.classList.contains('tree-children')) {
if (children.style.display === 'none') {
children.style.display = 'block';
element.textContent = '-';
} else {
children.style.display = 'none';
element.textContent = '+';
}
} else if (children && children.classList.contains('sub-list')) {
if (children.style.display === 'none') {
children.style.display = 'block';
element.textContent = '-';
} else {
children.style.display = 'none';
element.textContent = '+';
}
}
}
document.addEventListener('contextmenu', function(event) {
if (event.target.classList.contains('context-menu-trigger')) {
event.preventDefault();
const menu = document.getElementById('context-menu');
menu.style.display = 'block';
menu.style.left = event.pageX + 'px';
menu.style.top = event.pageY + 'px';
menu.dataset.item = event.target.textContent;
menu.dataset.parent = event.target.parentElement.parentElement.previousElementSibling.textContent;
}
});
document.addEventListener('click', function(event) {
const menu = document.getElementById('context-menu');
if (menu.style.display === 'block' && !event.target.classList.contains('context-menu-trigger')) {
menu.style.display = 'none';
}
});
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
const menu = document.getElementById('context-menu');
menu.style.display = 'none';
}
});
function handleContextMenuClick(option) {
const menu = document.getElementById('context-menu');
menu.style.display = 'none';
alert('Option sélectionnée: ' + option);
if (option === 'Lien') {
window.location.href = 'redirect.php?parent=' + encodeURIComponent(menu.dataset.parent) + '&item=' + encodeURIComponent(menu.dataset.item);
}
}
</script>
</head>
<body>
<div class="tree-view">
<?php displayTree($tree, $fileData); ?>
</div>
<div id="context-menu" class="context-menu">
<ul>
<li onclick="handleContextMenuClick('Option 1')">Option 1</li>
<li onclick="handleContextMenuClick('Option 2')">Option 2</li>
<li onclick="handleContextMenuClick('Option 3')">Option 3</li>
<li onclick="handleContextMenuClick('Option 4')">Option 4</li>
<li onclick="handleContextMenuClick('Option 5')">Option 5</li>
<li onclick="handleContextMenuClick('Lien')">Lien</li>
</ul>
</div>
</body>
</html>