Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASS DIRECTORYFILE LISTE DES DOSSIERS ET DES FICHIERS


Information sur la source

Catégorie :Class et Objet ( POO ) Classé sous : opendir, readdir, liste, class Niveau : Débutant Date de création : 13/09/2006 Date de mise à jour : 23/05/2007 17:29:38 Vu / téléchargé: 2 563 / 363

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

          Class DirectoryFile:
- Liste des dossiers et/ou des fichiers et les ajoutes dans un tableau (array);
- Les exemple montre comment manipuler les résultats dans des tableaux.
          Tester avec: PHP Version 4.4.1RC2-dev.
      Développer sur : Easy php 1.8 register_globals=off.
                      ---------------------------
- Lancez le index.php avec votre navigateur pour voir les exemples et les sources.
- Possibilité d’exclure certain fichier ou dossier.
- choix des extensions a affiché.
- Accepte les extensions en majuscule et minuscule (indiquez les en minuscule)
- Encode les noms de fichier pour les passer en paramètre via l’url.
- Supprime les extensions et les _ dans les nom de fichier pour un affichage propre dans les liens (mon_fichier.html => mon fichier).

 

Source

  • <?php
  • /* By @rboretom le 09/2006*/
  • class DirectoryFile{
  • var $SUPPORTED_EXT=array();
  • var $files_not_supported=array();
  • var $var_tri="tri";
  • //constructeur
  • function DirectoryFile($supported_ext="",$exlude=""){
  • //les extension supporter
  • $this->SUPPORTED_EXT=$supported_ext;
  • //exclu les fichier et/ou dossiers
  • $this->files_not_supported=$exlude;
  • }
  • function Search($dir=""){
  • if (is_dir($dir)) {
  • if ($handle = opendir($dir)) {
  • while (($file = readdir($handle)) !== false) {
  • $parts = explode(".",$file);
  • //separe l'extension
  • $ext = $parts[count($parts)-1];
  • //remplace les tiret par des espace
  • $tiret = str_replace('_', ' ', $file);
  • //enleve l'extension
  • $string = str_replace('.'.$ext, '', $tiret);
  • // Si le nom du fichier comporte des espaces, on l'encode !
  • $string_space= str_replace(' ', '%20', $file);
  • $chemin= str_replace(' ', '%20', $dir);
  • //converti l'extension en minuscule
  • $ext =strtolower($ext);
  • if($file != "." && $file != ".."){
  • //cache les fichiers a exclure
  • if(!isset($this->files_not_supported[$file])){
  • // c'est un dossier
  • if(count($parts)===1){
  • $type="dir";
  • //construit le tableau
  • $Files[]=array(
  • 'name' =>$file,
  • 'namespace' =>$string_space,
  • 'stringname'=>$string,
  • 'ext'=>'',
  • 'path'=>$chemin,
  • 'type'=>$type
  • );
  • }
  • //c'est un fichier
  • if(count($parts)===2){
  • $type="files";
  • /* affiche uniquement les fichiers
  • ayant la bonne extension */
  • if(isset($this->SUPPORTED_EXT[$ext])){
  • //construit le tableau
  • $Files[]=array(
  • 'name' =>$file,
  • 'namespace' =>$string_space,
  • 'stringname'=>strtolower($string),
  • 'ext'=>strtolower($ext),
  • 'path'=>$chemin,
  • 'type'=>$type);
  • }
  • }
  • }
  • }
  • }
  • }
  • }
  • if(isset($Files)){
  • return$Files;
  • }
  • }
  • //separe les fichiers et dossiers
  • function Liste_files($Files,$type,$tri="name"){
  • if(isset($Files)){
  • foreach ($Files as $ligneDuTableau){
  • if($ligneDuTableau["type"]===$type){
  • //construit le tableau $ligne
  • $ligne[]=array(
  • 'name' =>$ligneDuTableau["name"],
  • 'namespace' =>$ligneDuTableau["namespace"],
  • 'stringname'=>$ligneDuTableau["stringname"],
  • 'ext'=>$ligneDuTableau["ext"],
  • 'path'=>$ligneDuTableau["path"],
  • 'type'=>$ligneDuTableau["type"]
  • );
  • $sort[]=$ligneDuTableau[$tri];
  • }
  • }
  • //verrifie si le tableau existe
  • if(isset($ligne)){
  • //tri les resultats
  • array_multisort($sort, SORT_STRING, $ligne);
  • return$ligne;}
  • }
  • }
  • /* Melange les 2 tableaux(dossiers/fichiers) */
  • function file_merge($Dossier_a_explorer){
  • $dir=$this->Search($Dossier_a_explorer);
  • /* tri par default: par nom
  • pour trier par extension ajoutez:&tri=ext dans l'url
  • et recuper avec $_GET['tri'] */
  • if(isset($_GET[$this->var_tri])){
  • //liste les fichiers
  • $liste_file=$this->Liste_files($dir,"files",$_GET[$this->var_tri]);
  • }
  • else{
  • $liste_file=$this->Liste_files($dir,"files","name");
  • } //liste les dossier
  • $liste_doss=$this->Liste_files($dir,"dir");
  • //melange les 2 tableaux
  • // merci NKWolf
  • if(!is_array($liste_doss)){ $liste_doss = array($liste_doss); }
  • if(!is_array($liste_file)){ $liste_file = array($liste_file); }
  • $result = array_merge_recursive($liste_doss, $liste_file);
  • return $result;}
  • //--fin de la class
  • }
  • ?>
<?php
/* By @rboretom le 09/2006*/
class DirectoryFile{
	var $SUPPORTED_EXT=array();
	var $files_not_supported=array();
	var $var_tri="tri";
	//constructeur
function DirectoryFile($supported_ext="",$exlude=""){
	//les extension supporter
	$this->SUPPORTED_EXT=$supported_ext;
	//exclu les fichier et/ou dossiers
	$this->files_not_supported=$exlude;
	}
function Search($dir=""){
if (is_dir($dir)) {
 if ($handle = opendir($dir)) {
    while (($file = readdir($handle)) !== false) {
        $parts = explode(".",$file);
        //separe l'extension
        $ext = $parts[count($parts)-1];
        //remplace les tiret par des espace
        $tiret = str_replace('_', ' ', $file);
        //enleve l'extension
        $string = str_replace('.'.$ext, '', $tiret);
        // Si le nom du fichier comporte des espaces, on l'encode !
        $string_space= str_replace(' ', '%20', $file);
        $chemin= str_replace(' ', '%20', $dir);
        //converti l'extension en minuscule
        $ext =strtolower($ext);
	if($file != "." && $file != ".."){
		//cache les fichiers a exclure
	if(!isset($this->files_not_supported[$file])){
		// c'est un dossier
	    if(count($parts)===1){
	$type="dir";
	//construit le tableau
	$Files[]=array(
					'name' =>$file,
					'namespace' =>$string_space,
					'stringname'=>$string,
					'ext'=>'',
					'path'=>$chemin,
					'type'=>$type
	);
	}
	//c'est un fichier
	       if(count($parts)===2){
	$type="files";
	/*   affiche uniquement les fichiers
	  ayant la bonne extension */
	     if(isset($this->SUPPORTED_EXT[$ext])){
	  //construit le tableau
	$Files[]=array(
					'name' =>$file,
					'namespace' =>$string_space,
					'stringname'=>strtolower($string),
					'ext'=>strtolower($ext),
					'path'=>$chemin,
					'type'=>$type);
			   }
			}
			  }
			}
		      }
    	}
}
if(isset($Files)){
return$Files;
}	
}
//separe les fichiers et dossiers
function Liste_files($Files,$type,$tri="name"){
if(isset($Files)){
foreach ($Files as $ligneDuTableau){
	if($ligneDuTableau["type"]===$type){
	//construit le tableau $ligne
	$ligne[]=array(
		'name' =>$ligneDuTableau["name"],
		'namespace' =>$ligneDuTableau["namespace"],
		'stringname'=>$ligneDuTableau["stringname"],
		'ext'=>$ligneDuTableau["ext"],
		'path'=>$ligneDuTableau["path"],
		'type'=>$ligneDuTableau["type"]
		);
 		$sort[]=$ligneDuTableau[$tri];
			 }
           }
//verrifie si le tableau existe
 if(isset($ligne)){
 	//tri les resultats
 array_multisort($sort, SORT_STRING, $ligne);
 return$ligne;}	
    }
 }
 /* Melange les 2 tableaux(dossiers/fichiers) */
 function file_merge($Dossier_a_explorer){
	$dir=$this->Search($Dossier_a_explorer);
/* 	tri par default: par nom
	pour trier par extension ajoutez:&tri=ext dans l'url
	et recuper avec $_GET['tri'] */
if(isset($_GET[$this->var_tri])){
	//liste les fichiers
	$liste_file=$this->Liste_files($dir,"files",$_GET[$this->var_tri]);
}	
else{
	$liste_file=$this->Liste_files($dir,"files","name");
}	//liste les dossier
	$liste_doss=$this->Liste_files($dir,"dir");
  //melange les 2 tableaux
// merci NKWolf
	if(!is_array($liste_doss)){ $liste_doss = array($liste_doss); }
        if(!is_array($liste_file)){ $liste_file = array($liste_file); }


$result = array_merge_recursive($liste_doss, $liste_file);
return $result;}
//--fin de la class
}
?>
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

14 septembre 2006 14:24:11 :
remplacement des ereg_replace par des str_replace. déclaration du $_GET['tri']. déclarations de propriétés.
23 mai 2007 17:29:38 :
ajout des 2 ligne de NKWolf ;-)merci if(!is_array($liste_doss)){ $liste_doss = array($liste_doss); } if(!is_array($liste_file)){ $liste_file = array($liste_file); }

Commentaires et avis

signaler à un administrateur
Commentaire de JoJo738 le 14/09/2006 07:48:42

Lu,

J'ai pas vraiment regarder mais ca va ^^
Sinon, tu peux remplacer tes ereg_replace par des str_replace (plus rapide pou ca)
Et, peu etre faire quelque chose pour definir le $_GET['tri'], $_GET[$this->var_get]

signaler à un administrateur
Commentaire de FhX le 14/09/2006 13:00:11

???!!

Où c'est qu'elles sont les déclarations de propriétés la dedand ?

signaler à un administrateur
Commentaire de arboretom le 14/09/2006 14:33:26

Mis a jour des déclarations de propriétés et remplacement des ereg_replace.

signaler à un administrateur
Commentaire de NKWolf le 11/01/2007 14:40:28

moi j'ai une erreur lorsque j'ouvre index.php
Warning: array_merge_recursive() [function.array-merge-recursive]: Argument #1 is not an array in http://....../www/listefiles/Class_Directory.php on line 110

par défaut apparament $liste_doss n'est pas considérer comme un tableau ptet le définir en array() plus tôt dans le script no ?

signaler à un administrateur
Commentaire de NKWolf le 11/01/2007 14:45:19

voilà il est donc préférable soit de crée un deuxième répertoire, soit de vérifier que $liste_doss est bien un tableaux avant, j'ai pas regarder à fond, j'ai juste créer un deuxième repertoire et ca à résolu le problème

signaler à un administrateur
Commentaire de NKWolf le 11/01/2007 14:49:25

Class_Directory.php

//melange les 2 tableaux
if(!is_array($liste_doss))
{
    $liste_doss = array($liste_doss);
}
$result = array_merge_recursive($liste_doss, $liste_file);
return $result;


Voilà qui résou le problème définitivement

signaler à un administrateur
Commentaire de NKWolf le 11/01/2007 14:58:39

faudrais faire la même chose pour $liste_file car si il n'y que un seul fichier ca donne la même erreur mais sur $liste_file

if(!is_array($liste_doss)){ $liste_doss = array($liste_doss); }
if(!is_array($liste_file)){ $liste_file = array($liste_file); }

//melange les 2 tableaux
$result = array_merge_recursive($liste_doss, $liste_file);
return $result;

Car il est logique qui si l'un des 2 tableau n'en est pas un il ne sais pas les mélanger ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

opendir et readdir sur la machine [ par mageonyme ] Bonjour,Je voudrais que les utilisateurs de mon site puissent sélectionner un dossier qu'ils ont sur leur machine pour que l'ensemble du contenu soit Petit pb en PHP, iniatiliser une variable dans une liste deroulante [ par dadoudamien ] Bonjour,JE galère un peu.J'essaye de mettre a jour dynamiquement la variable $qte666, avec une liste déroulante.voici le tronche de mon code (c juste Quun pe maidez a faire un forum le plus simple possible [ par Metal Xwarrior ] qqun pouais maidez a faire un simple forum sans font juste avec des lien sans cooki ni session ex:nick.php--&gt;page du psuedo annonymeliste.php?p=1-- Recuperer les valeurs d'une liste [ par mojito84 ] bonjour,j'ai un pb pour recuperer les valeurs contenu dans une liste de selection.J'ai une premiere liste que je construit a l'aide d'une requete mysq Recuperer les valeurs d'une liste de selection [ par mojito84 ] bonjour,J'ai un pb pour recuperer les valeurs contenu dans une liste de selection.J'ai une premiere liste construite a partir d'une requete mysql, et liste déroulante, php, sql [ par gypsi3000 ] Je souhaiterai faire afficher une liste d'adresse web répertoriée dans une base de données depuis un menu déroulant qui correspond aux thèmes identifi Listes dynamiques. [ par Jouban ] Bonjour à tous!J'utilise des listes dynamiques avec utilisation d'une BD.Le principe est la consultation de noms (présents dans la base) en fonction d Checkbox [ par tritum ] TRITUMBonjour; Pour résumer, j'ai un formulaire avec une liste de checkbox, le choix de plusieurs checbox devra engendrer une autre liste de checkbox liste mois en cours [ par ASPerix ] Bonjour,Voila g une liste déroulante;&lt;select name=mois&gt; &lt;option value=1&gt;Janvier&lt;/option&gt;&lt;option value=2&gt;Février&lt;/option&gt; texte en survol (tooltip) sur une liste [ par panikunik ] Salut, j'affiche une liste de noms de fichiers dans un &lt;select&gt;.Je voudrais pouvoir afficher l'adresse complète de mon fichier quand je met la s


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,34 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.