begin process at 2012 05 30 14:45:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

effectuer action tant qu'il y a des fichiers dans un repertoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

effectuer action tant qu'il y a des fichiers dans un repertoire

vendredi 21 mai 2010 à 10:32:45 | effectuer action tant qu'il y a des fichiers dans un repertoire

ju0123456789

Bonjour,

Je voudrais effectuer un traitement en fonction du nombre de fichiers que je trouve dans un dossier.
Quand je cherche dans une BDD je fais

Code PHP :
// connexion
$SQL = "SELECT videos FROM fichiers WHERE extension = 'FLV' ";
$RES = mysql_query( $SQL );
while( $data = mysql_fetch_assoc( $RES ) )
{
  // Mon traitement
  echo $data['video'];
}
//deconnexion


Mais quand je veux effectuer mon traitement avec "tant qu'il y a un fichier dans un repertoire" au lieu de "tant qu'il y a de resultat dans la BDD" jesuis bloqué.
Quelqu'un peut m'aider svp ? merci.
vendredi 21 mai 2010 à 10:44:41 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

kohntark

Membre Club

Salut,

Tu peux te tourner vers la SPL avec RecursiveDirectoryIterator

Cordialement,


Kohntark -

vendredi 21 mai 2010 à 11:32:04 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

ju0123456789

hello kohntark !

RecursiveDirectoryIterator ça retourne le chemin et le nom de l'entrée courante du dossier, mais ce n'est pas vraiment ce que je souhaite faire, a moins que je n'ai pas compris à quoi sert cette fonction lol
vendredi 21 mai 2010 à 12:10:33 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

kohntark

Membre Club
Arf, ben j'ai peut être mal compris alors ^^

Si j'en crois ton exemple, j'imagine que tu souhaites faire un traitement sur chaque fichier trouvés, mais ne sachant pas exactement quelles données tu souhaites exploiter (nom de fichier, taille, date de modif, etc ...) je te proposais la SPL qui couvre une large partie de celles-ci.

Je pensais à un truc dans le genre :
Code PHP :
<?php
$iterator = new DirectoryIterator('ton_dossier');

foreach ($iterator as $entry) {
    if ($entry->isFile()) {
    // traitement
        echo $entry.'<br /> ';
    }
}
?>


Ou, en récursif :
Code PHP :
<?php

$dir ="ton_dossier";
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($dir,RecursiveDirectoryIterator::KEY_AS_FILENAME)
);

foreach ($iterator as $entry) {
    // traitement
    echo $entry.'<br /> ';

}
?>


Ai je mal compris ?
Si c'est le cas peux tu apporter plus d'infos sur ce que tu veux faire.


Cordialement,


Kohntark -

vendredi 21 mai 2010 à 12:26:10 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

ju0123456789

Hello !

Bon en fait si tu avais bien compris, c'est moi qu ia pas compris ce que tu m'as mis lol ! tu viens de me faire découvrir de nouvelles fonctions alors je suis un peu perdu (a oui il m'en faut peu :) )

Ce que je souhaite :
j'ai un dossier "videos" contenant des fichiers flv, et je voudrais faire un affichage sur une page videobook.php de toutes les videos contenues dans ce dossier afin de pouvoir les lire en streaming.

J'utilise le meme principe pour les photos, mais les photos sont également enregitrées dans la BDD, donc pour chaque element de ma table je test avec un if(file_exists($file)) et le tour est joué ! Or là je galère un peu en traitant directement les fichiers lol

Code PHP :
<?php
$iterator = new DirectoryIterator('ton_dossier');

foreach ($iterator as $entry) {
    if ($entry->isFile()) {
    // traitement
        echo $entry.'<br /> ';
    }
}
?>


Si j'ai bien compris cet exemple ci-dessus, tu check si c'est un dossier si c'est le cas tu met chaque fichiers et dossier trouvés dedans et tu traite chacun des ficheir grace au foreach ?

(toutes ces fonctions similaires ne sont pas documentees dans PHP manual et php.net donc pour m'y retrouver c'est pas évident)
vendredi 21 mai 2010 à 12:32:12 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

ju0123456789

et une auter petite question, dans un foreach, il y a til possibilité de connaitre le nombre de résultats contenus dasn le tableau ?
Ou il faut incrémenter une varaible pour chaque résultat lu ? ce qui n'est pas pratique si on veut mettre un truc du style "il y a X resultats trouves" car ça se retrouvera à la fin :/ et le count je dois pas marcher la je pense
vendredi 21 mai 2010 à 12:41:48 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

ju0123456789

haaa je suis désolé je t'enchaine lol
mais je ne dois peut etre pas avoir la libraire concernée ?

ça me met ceci :
Cannot instantiate non-existent class: directoryiterator

Alors qu'avec Wampserver en local ça fonctionne bien. c'est normal ?
vendredi 21 mai 2010 à 12:55:21 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

kohntark

Membre Club
Pourquoi ne traites tu pas les vidéos de la même façon que les photos ?
C'est tout de même bien plus logique de passer par une DB que de scanner un dossier (long, pas flexible, etc ...)

ça me met ceci :
Cannot instantiate non-existent class: directoryiterator

Alors qu'avec Wampserver en local ça fonctionne bien. c'est normal ?



Qu'elle est ta version de php ?
ne me dis pas que tu es encore en PHP 4


Kohntark -

vendredi 21 mai 2010 à 13:48:52 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

ju0123456789

lol bah mon provider a l version 4.4.9 :(

Et je ne traiet pas les videos de la mem maniere car à uploader c'est beaucoup trop long je les enregistre manuellement.

Deja une photo de 3Mo c'est long, alors j'imagine pas une video de 40Mo ^^ :/

C'est pourquoi j'essaye de trouver des solutions de secours
vendredi 21 mai 2010 à 14:06:57 | Re : effectuer action tant qu'il y a des fichiers dans un repertoire

kohntark

Membre Club
Réponse acceptée !

dans un foreach, il y a til possibilité de connaitre le nombre de résultats contenus dasn le tableau ?



Dans ce cas non, mais il y a plusieurs façons d'y remédier (bufferiser les résultats du foreach, ...)

(toutes ces fonctions similaires ne sont pas documentees dans PHP manual et php.net donc pour m'y retrouver c'est pas évident)


C'est clair, la SPL n'est vraiment pas bien documentée, et en plus il y a quelques bizarreries dans sa mise en oeuvre (selon moi bien sur)


Si j'ai bien compris cet exemple ci-dessus, tu check si c'est un dossier si c'est le cas tu met chaque fichiers et dossier trouvés dedans et tu traite chacun des ficheir grace au foreach ?



Oui, enfin, plus exactement :
tu instancies ton itérateur DirectoryIterator
tu itères sur chaque élément via la structure foreach
tu vérifies que l'entrée est un fichier ($entry->file())
tu fais ton traitement (ici un simple echo du nom du fichier)

Ci dessous un moyen de bufferiser :
<?php
$iterator = new DirectoryIterator('ton_dossier');

$buff = '';
$cnt = 0;

foreach ($iterator as $entry) {
if ($entry->isFile()) {
// traitement
$buff.= $entry.'<br />';
}
$cnt++;
}

echo 'nb de videos : '.$cnt.'<br />';
echo $buff;


?>


lol bah mon provider a l version 4.4.9 :(


Un conseil => change d'hébergeur !!!
Tu es chez qui ?

Normal que ça ne fonctionne pas donc.


Et je ne traiet pas les videos de la mem maniere car à uploader c'est beaucoup trop long je les enregistre manuellement.


En quoi cela t'empêche t il d'utiliser une DB ?
Tu peux très bien rentrer les infos en DB manuellement.
En plus ça te permet de mettre tout un tas d'autres infos : titre, description, lieu, catégorie, .... et donc de proposer un moteur de recherche, etc ... etc ...
Lire les noms des fichiers directement sur le système de fichiers est plus lent, ... entre autres.


Cordialement,

Kohntark -


1 2

Cette discussion est classée dans : traitement, action, fichiers, repertoire, effectuer


Répondre à ce message

Sujets en rapport avec ce message

traitement fichiers [ par elanspeech ] Salut,Dans une page, je passe en parametre un chemin de repertoire.J'aimerais pouvoir faire un remplacement de chaine de caracteres dans tous les fich fichiers htaccess [ par glipper ] Bonjour,les fichiers .htaccess servent à proteger l'acces à un (ou des) repertoires. Je suppose donc que ce fichier est lu avant n'importe quel autre Effacer tous les fichiers d'un repertoire [ par bercal ] Bonjour à tous.Quelqu'un pourrait il me dire s'il est possible d'effacer tous les fichiers d' un repertoire avec une unique commande.J'ai un repertoir copie des fichiers avec les sous repertoire sur disque local [ par angelx ] je voudrai copier les fichier d'un repertoire +sous repetoire vers un autre dossier local 'ex c:\temp ver c:\test'et si possible j'aimerais qu'il ne lecture fichiers [ par alahyaneali ] Bonjourje voudrais faire afficher les fichiers d'un repertoire triésdont le nom est supérieur à im_2432345.jpg et inférieur à im_2432445.jpgen utilisa Effectuer une action sur [ par Sandy084 ] Bonjour!Voila j'ai un petit probléme, j'aimerai ajouter des cases à cocher en face de chaque Client enregistré dans ma base de données lorsque je les  gestion des repertoire et fichiers [ par nacer_1954 ] Bonjour tout le monde; Je fais un site intranet   et j'aimerai savoir comment supprimer un repertoire d'un poste client sur le serveur at aussi les f Lister fichier d'un repertoire distant [ par blat ] Bonjour,Je voudrais lister des fichiers d'un repertoire distant. En gros je veux qu'a partir de www.monsite.com/mapage.php je puisse avoir la liste de Recherche de fichiers dans plusieur repertoire [ par VANLOC ] Bonjour, J'utilise la fonction ci apres qui me cherche un fichier avec une extension (jpg ici) dans un seul dossier ou j'ai toutes mes images. Ma que Deplacer fichiers vers repertoire parent depuis sous-repertoire [ par Galmiza ] Salut,Je souhaite deplacer des fichiers du repertoire courant (repertoire ou le script php est execute) vers le repertoire parent:Exemple, j'execute r


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,484 sec (3)

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