Lister des dossiers et fichier dans mysql

cs_wepai Messages postés 2 Date d'inscription dimanche 4 mai 2008 Statut Membre Dernière intervention 22 mai 2009 - 14 mai 2009 à 17:04
cs_wepai Messages postés 2 Date d'inscription dimanche 4 mai 2008 Statut Membre Dernière intervention 22 mai 2009 - 22 mai 2009 à 10:37
bonjour a tous,
j'ai un soucis !!!!!(sans blague!!)
resumé des épisodes precedent:je fais un site sur lequel on peut telechargé des partitions au format GP4 (guitar pro )et donc j'ai commencé a lister mon dossier contenant les partitions qui se trouve a la racine du site cela me donne une liste alphabetique des dossier sous forme de lien. la question premiere est la suivante: comment lister ensuite le sous dossier correspondant a chaque lien ????? la deuxieme question est :puis faire avec mysql une requete qui ferait une telle opération sans avoir a faire les entrées 1 a une (il y a 26 000 partitions)????

voici mon code pour le premier niveau
<?php
$nb_fichier = 0;
echo '';
?>
<?php
if($dossier = opendir('./tabs'))
{
?>
<?phpwhile(false !($fichier readdir($dossier)))
{
?>
<?php
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
?>
<?php
$nb_fichier++; //On incrémente le compteur de un
echo '<li>[musique.php ' . $fichier . ']</li>';
} //On ferme le if (qui permet de ne pas afficher index.php, etc.)
 
} //On termine la boucle
?>
<?php
echo '
';
echo 'Il y a ' . $nb_fichier .' fichier(s) dans le dossier';
 
closedir($dossier);
 
}
 
else
     echo 'Le dossier n\' a pas pu être ouvert';
?>
merci d'avance pour votre aide
wil

2 réponses

nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
14 mai 2009 à 23:13
Pour les sous dossiers, le filetype peut te donner des idées pour construitre une fonction récursive. Mais pourquoi réinventer la roue quand dans toute version actuelle de PHP, une des classes SPL fait ça très bien... Voir la documentation de RecursiveDirectoryIterator dans le manuel de PHP.

Il serait temps que tous passent enfin à PHP 5, le support de la V 4 étant bientôt fini, et PHP 6 pointant le bout du nez.

Pour ta deuxième question, c'est aussi simple.. tu utilises un RecursiveDirectoryIterator et ensuite un simple:

// On va supposer une table fichiers avec les champs nom et chemin complet...

$path = realpath('./fichiers_a_lister') ;

$files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $path ), RecursiveIteratorIterator::SELF_FIRST ) ;

foreach( $files as $name => $object) {
    // On ne veut que les fichiers et pas les répertoires
    if ( $object->isFile() ) {
       // on ne veut stocker que le chemin et le nom des fichiers
       $q = "INSERT INTO fichiers ( nom, chemin ) VALUES ( '$name', '" .
          $object->getPathName() . "'" ) ;
       // là le handle de la base...
       $db->exec( $q ) ;
    }
}

par exemple.. Ce n'est qu'une ossature, sans le stry... catch... ni le test de doublons, mais ça peut aider.
0
cs_wepai Messages postés 2 Date d'inscription dimanche 4 mai 2008 Statut Membre Dernière intervention 22 mai 2009
22 mai 2009 à 10:37
bonjour
merci pour cette reponse mais j'y ai mis toute la bonne volonté du monde et je n'y arrive toujours pas auriez vous un peu plus de détails sur la marche a suivre

wil
0
Rejoignez-nous