[PHP] Tri Extension
Résolu
thepchou
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
SRN Messages postés 95 Date d'inscription Statut Membre Dernière intervention -
SRN Messages postés 95 Date d'inscription Statut Membre Dernière intervention -
J'ai un programme qui liste les fichiers et les dossiers. Mon programme est assez dynamique. Mais j'ai des consignes assez clair :
-> Afficher le nombre d'extension identique dans le dossier
ex: .txt = 5 ; .bmp = 7 ...
-> Je dois prendre les fichiers ayant la même extension et les afficher dans un tableau html à part de celui qui liste les dossiers.
-> Faire un lien d'extension, c'est à dire un lien .txt, lorsque je click dessus, il n'affiche que les fichiers .txt dans un tableau html.
Voici mon code qui liste les dossiers et fichiers
Merci d'avance si vous arrivez à quelque chose !
-> Afficher le nombre d'extension identique dans le dossier
ex: .txt = 5 ; .bmp = 7 ...
-> Je dois prendre les fichiers ayant la même extension et les afficher dans un tableau html à part de celui qui liste les dossiers.
-> Faire un lien d'extension, c'est à dire un lien .txt, lorsque je click dessus, il n'affiche que les fichiers .txt dans un tableau html.
Voici mon code qui liste les dossiers et fichiers
function addScheme($entry,$base,$type) { $tab['name'] = $entry; $tab['type'] = filetype($base."/".$entry); $tab['date'] = filemtime($base."/".$entry); $tab['size'] = filesize($base."/".$entry); $tab['perms'] = fileperms($base."/".$entry); $tab['access'] = fileatime($base."/".$entry); $t = explode(".", $entry); $tab['ext'] = $t[count($t)-1]; return $tab; } /* liste des dossiers */ function list_dir($base, $cur, $level=0) { global $PHP_SELF, $BASE, $order, $asc; if ($dir = opendir($base)) { $tab = array(); while($entry = readdir($dir)) { if( is_dir($base."/".$entry) && !in_array($entry, array(".","..") ) ) { $tab[] = addScheme($entry, $base, 'dir'); } } /* tri */ usort($tab,"cmp_name"); foreach($tab as $elem) { $entry = $elem['name']; /* chemin relatif à la racine */ $file = $base."/".$entry; /* marge gauche */ for($i = 1 ; $i <= (4*$level) ; $i++) { echo " "; } /* l'entrée est-elle le dossier courant */ if($file == $cur) { echo "<img src=\"dir-open.gif\" /> $entry<br />\n"; } else { echo "<img src=\"dir-close.gif\" /> <a href=\"$PHP_SELF?dir=". rawurlencode($file) ."&order=$order&asc=$asc\">$entry</a><br />\n"; } /* l'entrée est-elle dans la branche dont le dossier courant est la feuille */ if(ereg($file."/",$cur."/")) { list_dir($file, $cur, $level+1); } } closedir($dir); } } /* liste des fichiers */ function list_file($cur) { global $PHP_SELF, $order, $asc, $order0; if ($dir = opendir($cur)) { /* tableaux */ $tab_dir = array(); $tab_file = array(); /* extraction */ while($file = readdir($dir)) { if(is_dir($cur."/".$file)) { if( !in_array($file, array(".","..") ) ) { $tab_dir[] = addScheme($file, $cur, 'dir'); } }else { $tab_file[] = addScheme($file, $cur, 'file'); } } /* Contient encore plus de code, mais c'est inutile pour mon problème */ function assocExt($ext) { $e = array( '' => "Unknown", 'BAT' => "Batch file", 'SYS' => "System File", 'doc' => "Microsoft Word", 'log' => "Log", 'xls' => "Microsoft Excel", 'ppt' => "Microsoft Power Point", 'pdf' => "Adobe Acrobat", 'zip' => "WinZip Archive", 'txt' => "Document texte", 'bmp' => "Bitmap", 'gif' => "GIF Image", 'jpg' => "JPEG Image", 'png' => "PNG Image", 'php' => "PHP Script", 'php3' => "PHP Script", 'htm' => "Web page", 'html' => "Web page", 'css' => "Cascading Style Sheet", 'js' => "JavaScript" ); if( in_array($ext, array_keys($e)) ) { return $e[$ext]; } else { return $e['']; } }
Merci d'avance si vous arrivez à quelque chose !
A voir également:
- [PHP] Tri Extension
- Changer extension fichier - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Extension .bin - Guide
- Extension dat - Guide
- Logiciel tri photo - Guide
3 réponses
En cherchant sur la toile j'ai trouvé ma réponse.
En modifiant le code trouvé, j'ai réussi à faire quelque chose de super.
Même si personne a pu m'aider, je post ici le bout de code utile qui scan le contenu du dossier et affiche le nombre d'extensions présentent dans ce dernier.
Exemple d'output :
Merci quand même !
En modifiant le code trouvé, j'ai réussi à faire quelque chose de super.
Même si personne a pu m'aider, je post ici le bout de code utile qui scan le contenu du dossier et affiche le nombre d'extensions présentent dans ce dernier.
function browse($dir, $pExtension) { if($handle = opendir($dir)) { while(false !== ($file = readdir($handle))) { $getExt = explode(".", $file); $countExt = count($getExt); $fExt = $countExt - 1; $myExt = $getExt[$fExt]; if (($myExt == $pExtension) && ($file != ".") && ($file != "..")) {$files[] = $file;} } } return $files; closedir($handle); } // Séparez les extensions par un espace. $gExtension = "exe mp3 php zip doc txt BAT SYS log xls ppt pdf bmp gif jpg png php3 htm html css js"; $ExpExt = explode(" ", $gExtension); sort($ExpExt); foreach($ExpExt as $findExt) { $getFile = @browse($dir, $findExt); /* N'oubliez pas de spécifier le chemin $dir (= ".") */ $countFile = count($getFile); if($countFile != 0) { echo "<b>Fichier(s) ".strtoupper($findExt)."</b> (".$countFile.")<br />"; foreach($getFile as $myFile) { echo "- ".$myFile."<br />"; } echo "<br>"; } }
Exemple d'output :
Fichier(s) PHP (2) : - index.php - page1.php Fichier(s) MP3 (1) : - lolo.mp3
Merci quand même !
Entre temps, j'ai essayé de faire une fonction qui ressemble à
Le voici :
Pour moi il y'a un hic, comment faire pour mettre ça dans la boucle qui liste les fichiers pour afficher le nombre d'extension identique ?
Le code entier m'a été fourni, je suis stagiaire et le php est un langage que je n'ai jamais utilisé auparavant...
Please help ! (=^_^=)
function assocExt($ext).
Le voici :
function sameExt($ext) { $e = array( 'BAT', 'SYS', 'doc', 'log', 'xls', 'ppt', 'pdf', 'zip', 'txt', 'bmp', 'gif', 'jpg', 'png', 'php', 'php3', 'htm', 'html', 'css', 'js' ); if( in_array($ext, $e) ) { return $e[$ext]; } }
Pour moi il y'a un hic, comment faire pour mettre ça dans la boucle qui liste les fichiers pour afficher le nombre d'extension identique ?
Le code entier m'a été fourni, je suis stagiaire et le php est un langage que je n'ai jamais utilisé auparavant...
Please help ! (=^_^=)
Salut,
il vraiment super cool ton code, j'ai quand même un question, pour moi, ce que je suis en train de faire, il faut que à chaque fichier xml trouvé, il afficher "salut <br>"
et ça je suis sûr que je peux utiliser ton code mais je ne sais pas comment le transformer pour que je puisse faire ça et comment le transformer aussi pour qu'il puisse faire pas que dasn un seul dossier mais aussi dans les dossier en dessus de celui qui est définit dans $dir ??
si tu m'apporter un peux d'aide sur cela ça serait bien volontiers
@++ SRN
il vraiment super cool ton code, j'ai quand même un question, pour moi, ce que je suis en train de faire, il faut que à chaque fichier xml trouvé, il afficher "salut <br>"
et ça je suis sûr que je peux utiliser ton code mais je ne sais pas comment le transformer pour que je puisse faire ça et comment le transformer aussi pour qu'il puisse faire pas que dasn un seul dossier mais aussi dans les dossier en dessus de celui qui est définit dans $dir ??
si tu m'apporter un peux d'aide sur cela ça serait bien volontiers
@++ SRN