begin process at 2012 05 27 22:09:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > CLASS DIRECTORYFILE LISTE DES DOSSIERS ET DES FICHIERS

CLASS DIRECTORYFILE LISTE DES DOSSIERS ET DES FICHIERS


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :4 141 / 478

Auteur : arboretom

Ecrire un message privé
Site perso
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

Les Membres Club peuvent 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); }

 Sources du même auteur

Source avec Zip TOOL SQL CLASS GÉNÉRATION DE CODE POUR MYSQL(CONNECTION,FORM...

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

REDIMENSIONNEMENT D'IMAGE PHP par JStevens
Source avec Zip MY.DEVIANTART API par inwebo
Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42
CURRYFICATION DE FONCTIONS par TychoBrahe
Source avec Zip Source avec une capture LISTAGE DE REPERTOIRE D'UN SITE WEB par Gally

Commentaires et avis

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]

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 ?

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.

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 ?

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

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

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 problème avec opendir et readdir [ par boubeuch1 ] je fais la partie administrateur d'un site, je souhaite faire en sorte d'accéder à différents album photo contenu dans un dossier: <?php $dossierphoto Liste déroulante pour filtrer résultats issus d'une table sql [ par loonasia41 ] Bonjour à tous, Je suis en train de créer une base de données où j'affiche mes résultats dans un tableau grâce à php. Ma base de données contient po visualiser la liste des connectés en php [ par malia01 ] je suis entraine de dévelloper un site web en PHP dans laquel chaque type d'utilisateur techniciens expert administrateur possédent un mot de passe e Liste déroulante en php [ par Nadyaa ] [i]Bonjour à tous,je travaille sur une application de gestion de stock et je dois faire 4 listes déroulantes en PHP liées entre elles... J'ai déjà fa liste des dates entre deux date [ par nitho ] Bonjour à tous, Dites j'ai un problème de requête MySQL, j'ai deux champs qui me donne une date de début et une date de fin, j'aimerais avoir la liste lister un repertoire d'une liste deroulante[php,js,html] [ par joinfo ] Bonjour tous le monde j'ai un probleme si vous pouvez aiser ,j'ai deja fait la fonction pour lister un repertoire mais le probleme je veux lister le c lister un repertoire d'une liste deroulante[php,js,html] [ par joinfo ] Bonjour je veux lister le contenu d'un repertoire dans une liste deroulante pour que l'utilisateur peux deplacer un fichier vers le repertoire selecti Navigation entre les n - uplets [ par julsac ] Bonjour, Je suis actuellement en train de développer un petit outil pour mon compte perso. J'ai une liste de film avec un lien vers le descriptif du liste déroulante [ par cy4nur3 ] Bonjour, comment puis je faire pour qu'une liste déroulante m'affiche le nombre compris entre 1 et n sachant que ce n a été renseigné dans une BDD


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales