IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Trier les dossier et les fichiers par date de dernière modification


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 99
    Points : 53
    Points
    53
    Par défaut Trier les dossier et les fichiers par date de dernière modification
    Bonjour, après quelque recherche sans solution, je sollicite votre appui pour trier un répertoire par le critère dernière date de modification du dossier
    et aussi trier les fichiers par le même critère
    voici mon code que j'utilise déjà avec les critères "sort" ou "rsort" (alphabetiquement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    $dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
    $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
    $fichier= array(); // on déclare le tableau contenant le nom des fichiers
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers
    while($element = readdir($dir)) {
    	if($element != '.' && $element != '..') {
    		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
    		else {$dossier[] = $element;}
    	}
    }
     
    closedir($dir);
     
    if(!empty($dossier)) {
    	sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant	
    		foreach($dossier as $lien){
    			echo "<a href=\"$dir_nom/$lien\">$lien</a>";
    		}
     
    }
     
    if(!empty($fichier)){
    	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant	
    		foreach($fichier as $lien) {
    			echo "<a href=\"$dir_nom/$lien \">Télécharger ($lien)</a>";
    		}
     
     }
    ?>
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il suffit de lire la date et de trier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
    $dir = scandir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
    $fichier= array(); // on déclare le tableau contenant le nom des fichiers
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers
    foreach ($dir as $element) {
    	if($element != '.' && $element != '..') {
                                $stat = stat($dir_nom . '/' . $element);
                                $date = $stat['mtime'];
    		if (!is_dir($dir_nom.'/'.$element)) {$fichier[$element] = $date; }
    		else {$dossier[ $element] = $date; }
    	}
    }
     
    asort($dossier);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 99
    Points : 53
    Points
    53
    Par défaut
    Merci!
    Etant O en php voila ce que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
    $dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
    $dir = scandir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
    $fichier= array(); // on déclare le tableau contenant le nom des fichiers
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers
    foreach ($dir as $element) {
    	if($element != '.' && $element != '..') {
                                $stat = stat($dir_nom . '/' . $element);
                                $date = $stat['mtime'];
    		if (!is_dir($dir_nom.'/'.$element)) {$fichier[$element] = $date; }
    		else {$dossier[ $element] = $date; }
    	}
    }
     
    closedir($dir);
     
    if(!empty($dossier)) {
    	asort($dossier); // pour le tri croissant, rsort() pour le tri décroissant	
    		foreach($dossier as $lien){
    			echo "<a href=\"$dir_nom/$lien\">$lien</a>";
    		}
     
    }
     
    if(!empty($fichier)){
    	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant	
    		foreach($fichier as $lien) {
    			echo "<a href=\"$dir_nom/$lien \">Télécharger ($lien)</a>";
    		}
     
     }
    ?>
    et j'obtient comme erreur ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ( ! ) Warning: closedir() expects parameter 1 to be resource, array given in C:\wamp\www\ISLAMSPIP\mp3preches\MP3\code.php on line 16
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0021	374808	{main}( )	..\code.php:0
    2	0.0242	386520	closedir ( )	..\code.php:16
    1391732236139173728113917698291391769835139176984013917698451391769854139176988313917698901391769909139176991513917699211391769926139176993213917699401391769946139176995213917699611391769966139176997113917699761391769985139176999113917699971391770003139177000913917700141391770027139177003613918144711391896556139214711213937841891393886568139556702214000201661400591820140062065414008894121401351111Télécharger (1401365476)

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il n'y a pas besoin de closedir() puisqu'il n'y a pas d'opendir().
    Si tu regardes bien mon code, le nom du fichier/dossier est en clef du tableau et non plus en valeur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 99
    Points : 53
    Points
    53
    Par défaut
    Effectivement en enlevant closedir() l'erreur part mais il reste le fait qu'il affiche des tas de chiffre au lieu du nom de mes dossiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1391732236139173728113917698291391769835139176984013917698451391769854139176988313917698901391769909139176991513917699211391769926139176993213917699401391769946139176995213917699611391769966139176997113917699761391769985139176999113917699971391770003139177000913917700141391770027139177003613918144711391896556139214711213937841891393886568139556702214000201661400591820140062065414008894121401351111Télécharger (1401366326)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme je viens de te dire le nom du fichier est en clef du tableau et pas en valeur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 99
    Points : 53
    Points
    53
    Par défaut
    Je suis tout à fait null en php et je ne comprend pas grand chose en vos terme clef, valeur.
    Comment pourriez vous m'aider à afficher les résultat sous comme affiche mon ancien code tout en triant sur le critère date de modification.
    J'utilise le code pour afficher des MP3 d'un dossier
    mon code au complet est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <?php
    $dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
    $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
    $fichier= array(); // on déclare le tableau contenant le nom des fichiers
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers
    $nb_fichier = 0;
     
    while($element = readdir($dir)) {
        if($element != '.' && $element != '..') {
            if (!is_dir($dir_nom.'/'.$element)) {
                $extension = pathinfo($element, PATHINFO_EXTENSION);
                if ($extension == 'mp3') {
                    $fichier[] = $element;
                }
            } else {
                $dossier[] = $element;
            }
        }
    }
     
    closedir($dir);
     
    if(!empty($dossier)) {
    	rsort($dossier); // pour le tri croissant, rsort() pour le tri décroissant
    			foreach($dossier as $lien){
    // On enlève l'extension du fichier et les 5 première caractère
    		$nomdoc = substr($lien, 0);
    // FIN DE LA COUPURE DE L'EXTENSION	
    			echo "<a href=\"$dir_nom/$lien/index2.php \">$nomdoc</a>";
    		}
     
    }
     
    if(!empty($fichier)){
    // on compte le nombre de pages nécessaires
    $nfichier = 20;$nombre_pages = ceil(count($fichier) / $nfichier);
    $page_actuelle = isset($_GET['page']) ? intval($_GET['page']) : 1;
     
    // on decoupe le tableau contenant les fichiers au niveau de la page qu'on veut 
    $fichier = array_slice($fichier, ($page_actuelle - 1) * $nfichier, $nfichier);
    	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
     
    		foreach($fichier as $lien) {
    		// On enlève l'extension du fichier et les 5 première caractère
    		$vowels = array("^");
    $sanstiret = str_replace($vowels, "", "$lien");
    		$simplenom = substr($sanstiret, 0);
    		$pos_point = strpos($simplenom, '.');
    $nomdufichier_sans_extension = substr($simplenom, 0, $pos_point);
    // FIN DE LA COUPURE DE L'EXTENSION			
     
    		$nb_fichier++; // On incrémente le compteur de 1
    			echo "<a href=\"allah.php?bissmillah=$lien\">$nomdufichier_sans_extension</a>";
    					}
     
    if( $page_actuelle <= 1 && $nombre_pages == 1 )  echo '';	else echo"Liste des Pages:\n";// on met un lien pour chaque page, le lien donne le numero de page a afficher
    for ($i = 1; $i <= $nombre_pages; $i ++) {
    if( $page_actuelle <= 1 && $nombre_pages == 1 )    echo ' ';	else  echo'<a href="?page=' . $i . '" class="page">'  . $i .  '</a>';}
    echo"</center>";
    $precedent = $page_actuelle-1;
    $suite = $page_actuelle+1;
    echo'<br>';
     
    if( $page_actuelle <= 1 && $nombre_pages != 1 ) // Si la page actuel n'est pas supérieur à 1  
    echo '<p align="right"><a href="?page=' . $suite . '">Suivant</a></p>'; 
     
    else if( $page_actuelle ==  $nombre_pages && $nombre_pages != 1 ) // Si on n'est pas à la dernière page 
    echo '<p align="left"><a href="?page=' . $precedent . '">Précedent</a></p>';
     
    else if( $page_actuelle <= 1 && $nombre_pages == 1 ) // Si c'est une seule page  
    echo '';
     
    else // Si on est ni au premier ni au dernier
    echo '
    <center>
    <table border="0" width="100%">
        <tr>
            <td width="30%"><a href="?page=' . $precedent . '">Précedent</a></td>
            <td width="40%">&nbsp;</td>
            <td align="right" width="30%"><a href="?page=' . $suite . '">Suivant</a></td>
        </tr>
    </table>
    </center>'; 
     
     
     
     }	
     
    ?>
    Merci

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu changes simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($dossier as $lien=>$date){
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 99
    Points : 53
    Points
    53
    Par défaut
    Merci énormément pour l'aide ça marche à merveille. Maintenant je vais tenter de récupérer la taille et la durée des fichiers mp3 pour les afficher.
    Je vais faire des recherche voir s'il y a pas un poste qui parle de ça.
    Si non je reviendrai vers vous pour solliciter à nouveau un coud de main.
    Encore Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/12/2011, 16h01
  2. [JFileChooser] Trier les fichiers par date de modification
    Par stounouslous dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 10/05/2008, 12h47
  3. Réponses: 35
    Dernier message: 21/05/2006, 21h01
  4. Réponses: 3
    Dernier message: 12/09/2005, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo