[RESOLU] comment supprimer . et .. à l'affichage

Eléphant du PHP | 66 Messages

27 juin 2023, 22:30

Bonjour
j'ai fait un script pour déplacer des photos d'un dossier vrac vers des dossiers en fonction des noms des images.
Ce script fonction !! :D

Mais lorsque je veux afficher la liste des dossiers avec ce que contient chaque dossier, dans le contenu de chaque dossier j'ai
.
..
je voudrai les supprimer mais je n'y arrive pas, alors après plusieurs heures de combat avec le code je viens chercher de l'aide pour comprendre mon erreur.
<?php

class Image
{   //retourne les fichiers présent dans le répertoire $image_dir
    public function getImages($image_dir)
    {   //ouverture du répertoire
        if($handle = opendir($image_dir))
        {   //création d'un tableau vide $images pour récupérer les fichiers
            $images = [];
            //pour chaque entrée dans le répertoire
            while(false !== ($entry = readdir($handle)))
            {   //vérification qu'il s'agit d'un fichier
                if(($entry != '.') and ($entry != '..') and ($entry != '.DS_Store'))
                {    //ajout du nom du fichier au tableau $images
                    $images[] = $entry;             
                }
            }
        }
     //fermeture du répertoire
    closedir($handle);
    //retour tableau des fichiers du répertoire $directory
    return $images;
    }
}

//chemin des différents dossiers et sous dossiers
$image_dir = '/code/rangement/vrac/';


//instantiation class Image
$image = new Image();
//récupération tableau des noms de fichier présents dans le répertoire
$images = $image->getImages($image_dir);

//boucle de récuperation des noms des images du tableau $images
foreach($images as $key => $name)
{   //fractionnement du nom de chaque nom de fichier pour récupérer avions ou montagne_2009
    $explode = explode('-',$name);  
        $array[] = $explode[0]; 
        //vérification si $explode[0] n'est pas un dossier
        if(!is_dir($explode[0]))
        {   //création du dossier $explode[0]
            mkdir($explode[0]);
            //création du chemin de ss_dossier
            $ss_dossier ='/code/rangement/' .$explode[0]. '/';
            //renome le nom de l'image du dossier vrac en la déplaçant dans le ss_dossier (dans notre cas pas de modification du nom)
            rename($image_dir.$name,$ss_dossier.$name);
        }
        else
        {   //création du chemin de ss_dossier
            $ss_dossier ='/code/rangement/' .$explode[0]. '/';
            //renome le nom de l'image du dossier vrac en la déplaçant dans le ss_dossier (dans notre cas pas de modification du nom)
            rename($image_dir.$name,$ss_dossier.$name);
        }
    
}   

?>

<!DOCTYPE html>
<html>
    
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title>Rangement d'images</title>        
    </head>
    <body>
        
<h1> Rangement d'images </h1>

<?php


$scandir = scandir('/code/rangement/');

foreach($scandir as $fichier){    
    if(is_dir($fichier) and $fichier != '.' and $fichier != '..'){
        echo "$fichier<br/>"; 
        $fichiers = scandir('/code/rangement/' .$fichier. '/');
        foreach($fichiers as $name_photo){
            if(is_dir($name_photo) and $name_photo != '.' and $name_photo != '..'){ 
            }    echo '<li>' .$name_photo. '</li>';
            
        }               
    }  
}   

?>
   
</body>
</html>

Eléphant du PHP | 66 Messages

27 juin 2023, 22:43

youpi j'ai trouvé comme quoi, il faut persévérer !!
ma fin de code est faut voici la version corrigé de la fin du code
sur les deux dernière ligne de code
foreach($scandir as $fichier){    
    if(is_dir($fichier) and $fichier != '.' and $fichier != '..'){
        echo "$fichier<br/>"; 
        $fichiers = scandir('/code/rangement/' .$fichier. '/');
        foreach($fichiers as $name_photo){
           if(!is_dir($name_photo) and $name_photo != '.' and $name_photo != '..'){ 
            echo '<li>' .$name_photo. '</li>';
          }   
            
        }               
    }  
}   

Avatar du membre
Mammouth du PHP | 1564 Messages

27 juin 2023, 22:49

Penses à ajouter une ouverture et fermeture de liste avec <ul> et </ul> pour ton dernier code. Ceci pour un HTML correct.

Passe en résolu si ta trouvé une solution ;)