Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Python
/
Monsta-FTP-master
/
affichahe _expand_collpase_tableau
:
work01.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php // Vérifier si une valeur a été envoyée via GET if (isset($_GET['file'])) { $file = htmlspecialchars($_GET['file']); // Éviter les injections avec htmlspecialchars echo "<p>Vous avez cliqué sur le lien pour le fichier : <strong>$file</strong></p>"; $chemin = "/home/analogde//www/Document_workarea/patrice/plouf"; $fichier_telechargement = $chemin ."/" . $file; if ( file_exists( $fichier_telechargement )) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($fichier_telechargement) . '"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($fichier_telechargement)); ob_clean(); flush(); readfile($fichier_telechargement); exit(); } } /********************************************************************************/ $chemin = "/home/analogde//www/Document_workarea/patrice/plouf"; $liste_fichier_repertoire = []; $liste_fichier_repertoire = Listing_fichiers_repertoire($chemin); //echo "<pre>"; //print_r($liste_fichier_repertoire); //echo "<pre>"; $result = groupFilesByVersion($liste_fichier_repertoire); // Affichage du résultat //echo "<pre>"; //print_r($result); //echo "</pre>"; // on rajoute la version initial pour toutes les clés foreach ($result as $key => &$subArray) { //if (empty($subArray)) //{ $subArray[] = $key; // Insérer la clé dans le tableau vide //} } // Trie les versions dans chaque groupe foreach ($result as $baseFile => &$versions) { usort($versions, function($a, $b) { // Extraction des numéros de version pour le tri preg_match('/_v(\d+)\./', $a, $matchesA); preg_match('/_v(\d+)\./', $b, $matchesB); $versionA = isset($matchesA[1]) ? (int)$matchesA[1] : 0; $versionB = isset($matchesB[1]) ? (int)$matchesB[1] : 0; return $versionA - $versionB; }); } //print_r($result); $data = completion_data($result, $chemin ); // Parcours du tableau et changement du path par le nom du fichier foreach ($data as $key => &$subArrays) { foreach ($subArrays as &$subArray) { if (isset($subArray['file_name'])) { // Remplacer le chemin complet par le nom du fichier $subArray['file_name'] = basename($subArray['file_name']); // getFileName($subArray['file_name']); } } } echo "<pre>"; print_r($data); echo "</pre>"; /* foreach ($data as $mainFile => $details) { echo "Fichier principal : $mainFile\n"; foreach ($details as $fileInfo) { echo " Nom complet : " . $fileInfo['file_name'] . "<br>"; echo " Taille : " . $fileInfo['size'] . " octets " . "<br>"; echo " Date de création : " . $fileInfo['creation_date'] . "<br>"; echo "----------------------------------------" ."<br>"; } } */ /*************************************************************/ function groupFilesByVersion($files) { $groupedFiles = []; foreach ($files as $file) { // Vérifie si le fichier contient la sous-chaîne '_vxx' if (preg_match('/(.*)_v\d+\.(\w+)$/', $file, $matches)) { $baseName = $matches[1] . '.' . $matches[2]; $groupedFiles[$baseName][] = $file; } else { // Ajoute les fichiers de base sans version if (!isset($groupedFiles[$file])) { $groupedFiles[$file] = []; } } } // Trie les versions dans chaque groupe /*foreach ($groupedFiles as $baseFile => &$versions) { usort($versions, function($a, $b) { // Extraction des numéros de version pour le tri preg_match('/_v(\d+)\./', $a, $matchesA); preg_match('/_v(\d+)\./', $b, $matchesB); $versionA = isset($matchesA[1]) ? (int)$matchesA[1] : 0; $versionB = isset($matchesB[1]) ? (int)$matchesB[1] : 0; return $versionA - $versionB; }); }*/ return $groupedFiles; } /*************************************************************/ function Listing_fichiers_repertoire($repertoire) { $liste_fichier_repertoire = []; if (is_dir($repertoire)) { $fichiers = scandir($repertoire); foreach ($fichiers as $fichier) { if ($fichier !== '.' && $fichier !== '..') { $liste_fichier_repertoire[] = $fichier; } } } return($liste_fichier_repertoire); } /*************************************************************/ function completion_data($data, $chemin) { // Parcourir le tableau et ajouter les informations de taille et date de création pour chaque fichier foreach ($data as $key => &$subArray) { // Utiliser une référence pour modifier directement le tableau foreach ($subArray as &$fileName) { // Parcourir chaque nom de fichier dans le sous-tableau // Vérifier si le fichier existe avant de récupérer ses informations $fileName = $chemin ."/" . $fileName; if (file_exists($fileName)) { $fileSize = filesize($fileName); // Taille du fichier en octets $fileCreationTime = filectime($fileName); // Date de création en timestamp $formattedDate = date("Y-m-d H:i:s", $fileCreationTime); // Formater la date // Ajouter un sous-tableau avec les informations du fichier $fileName = array( 'file_name' => $fileName, // Nom du fichier 'size' => $fileSize, // Taille du fichier 'creation_date' => $formattedDate // Date de création formatée ); } else { // Si le fichier n'existe pas, insérer une erreur $fileName = array( 'file_name' => $fileName, 'error' => "File not found" ); } } } // Afficher le tableau modifié //echo "<pre>"; //print_r($data); //echo "</pre>"; return($data); } /**************************************************************************************/ function affiche() { foreach ($data as $filename => $file_versions) { // Afficher le nom de fichier echo "Fichier : $filename\n"; $subarray_count = count($file_versions); echo " ploug " .$subarray_count ."<br>"; foreach ($file_versions as $index => $version) { // Afficher l'index du sous-tableau (index de la version du fichier) echo " Sous-tableau " .$index . "<br>"; echo " Nom du fichier : " . $version['file_name'] . "<br>"; echo " Taille : " . $version['size'] . " octets" . "<br>"; echo " Date de création : " . $version['creation_date'] . "<br>"; echo "----------------------------\n"; // Séparateur pour chaque version } // Accéder à un sous-tableau par indice /* $file_key = "91782786.jpg"; // Le fichier auquel on veut accéder $subarray_index = 3; // L'indice du sous-tableau (par exemple, la deuxième version) echo "5555555555555555555555555555555555555555555555" ."<br>"; // Vérifier si la clé existe et l'indice est valide if (isset($data[$file_key]) && isset($data[$file_key][$subarray_index])) { $subarray = $data[$file_key][$subarray_index]; // Afficher le contenu du sous-tableau echo "Nom du fichier : " . $subarray['file_name'] . "\n"; echo "Taille : " . $subarray['size'] . " octets\n"; echo "Date de création : " . $subarray['creation_date'] . "\n"; } else { echo "Sous-tableau ou clé non trouvée.\n"; } */ // Parcourir les versions de chaque fichier /*foreach ($file_versions as $version) { // Afficher les informations de chaque version echo "Compteur " $file_version ."<br>"; echo " Nom du fichier : " . $version['file_name'] . "<br>"; echo " Taille : " . $version['size'] . " octets" . "<br>" ; echo " Date de création : " . $version['creation_date'] . "<br>"; echo "----------------------------" . "<br>"; // Séparateur pour chaque version }*/ } } //recherche($data, "91782786.jpg", 3); //$keys = array_keys($data); //foreach ($keys as $key) //{ // echo "Clé : " .$key ."<br>"; //} function recherche($data, $file_key, $subarray_index) { echo "5555555555555555555555555555555555555555555555" ."<br>"; // Vérifier si la clé existe et l'indice est valide if (isset($data[$file_key]) && isset($data[$file_key][$subarray_index])) { $subarray = $data[$file_key][$subarray_index]; // Afficher le contenu du sous-tableau echo "Nom du fichier : " . $subarray['file_name'] . "\n"; echo "Taille : " . $subarray['size'] . " octets\n"; echo "Date de création : " . $subarray['creation_date'] . "\n"; } else { echo "Sous-tableau ou clé non trouvée.\n"; } } /************************************************************************************/ ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tableau des fichiers</title> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <style> a { color: blue; /* Couleur du lien */ text-decoration: none; /* Suppression du soulignement */ } a:hover { text-decoration: underline; /* Ajouter le soulignement au survol si désiré */ } </style> </head> <body> <div class="container mt-5"> <h2 class="text-center mb-4">Liste des fichiers</h2> <!-- <table class="table table-striped table-hover"> --> <table class="table table-hover"> <thead class="table-dark"> <tr> <th scope="col">File Name</th> <th scope="col">Number of Elements</th> <th scope="col">Size (Bytes)</th> <th scope="col">Creation Date</th> <th scope="col">Action</th> <!-- Colonne Action --> </tr> </thead> <tbody> <?php foreach ($data as $key => $entries) { $numElements = count($entries); // Nombre d'éléments dans le sous-tableau if ($numElements == 1) { // Si un seul élément, afficher le fichier normalement $entry = $entries[0]; // Seulement une entrée echo "<tr>"; echo "<td>" . htmlspecialchars($entry['file_name']) . "</td>"; echo "<td>" . $numElements . "</td>"; echo "<td>" . htmlspecialchars(number_format($entry['size'])) . "</td>"; echo "<td>" . htmlspecialchars($entry['creation_date']) . "</td>"; echo "<td></td>"; // Pas de bouton d'action pour les fichiers sans versions supplémentaires echo "</tr>"; } else { // Si plusieurs versions, afficher la première ligne puis les suivantes dans des lignes cachées $firstEntry = $entries[0]; // Première version, visible echo "<tr>"; echo "<td>" . htmlspecialchars($firstEntry['file_name']) . "</td>"; echo "<td>" . $numElements . "</td>"; echo "<td>" . htmlspecialchars(number_format($firstEntry['size'])) . "</td>"; echo "<td>" . htmlspecialchars($firstEntry['creation_date']) . "</td>"; // Bouton d'action pour afficher les autres versions echo "<td><button class='btn btn-primary btn-sm' data-bs-toggle='collapse' data-bs-target='#collapse_" . md5($key) . "' aria-expanded='false' aria-controls='collapse_" . md5($key) . "'>Expand</button></td>"; echo "</tr>"; // Afficher les autres versions dans des lignes cachées foreach (array_slice($entries, 1) as $entry) { // On saute la première version table-danger echo "<tr class='collapse table-primary' id='collapse_" . md5($key) . "'>"; //echo "<td colspan='4'>" . htmlspecialchars($entry['file_name']) . "</td>"; //<td><a href="https://example.com/fichier2" target="_blank">Télécharger</a></td> //echo "<td>" . "<a href='https://example.com/fichier2' >" . htmlspecialchars($entry['file_name']) . "</a>" . "</td>"; $pipo = "12345"; //echo "<td>" ."<a href='?file=<?php echo urlencode($pipo); ?>'>" Voir Fichier "</a></td>"; ?> <!-- <td><a href="?file=<?php echo urlencode($pipo); ?>">Voir Fichier 2</a></td> --> <td><a href="?file=<?php echo urlencode($entry['file_name']); ?>"><?php echo htmlspecialchars($entry['file_name']); ?></a></td> <?php /* //echo "<td>" . "<a href='?file=' >" . htmlspecialchars($entry['file_name']) . "</a>" . "</td>"; //<td><a href="?file=<?php echo urlencode($file2); ?>">Voir Fichier 2</a></td> //<td><a href="?file=<?php echo urlencode($file2); ?>">Voir Fichier 2</a></td> //<td><a href="?file=fichier2">Voir Fichier 2</a></td>*/ /* echo "<td>" . htmlspecialchars($firstEntry['file_name']) . "</td>";*/ echo "<td>" . "</td>"; echo "<td>" . htmlspecialchars(number_format($firstEntry['size'])) . "</td>"; echo "<td>" . htmlspecialchars($firstEntry['creation_date']) . "</td>"; echo "<td>" . "</td>"; echo "</tr>"; } } } ?> </tbody> </table> </div> <!-- Bootstrap JS and dependencies --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>