lister les fichiers d'un dossier

Petit nouveau ! | 4 Messages

18 juil. 2018, 08:54

bonjour
j'ai déjà fait des choses en php mais là je vois plus du tout ou est le probleme et je me prends la tete et j('en ais marre pourtant sur un truc aussi basique
je veux simplement afficher dans ma page web les images se trouvant dans un dossier
voila l'organisation des dossiers :
Image
dossier livres avec page index.php qui doit afficher les images du sous-dossier images

voila mon code php pour mettre les noms des fichiers dans un tableau:
$dossier = "images/";
$fichier = "";
$x = 0;
if (is_dir($dossier)) { 
  if ($dir = @opendir($dossier)){
    while (($fichier = readdir($dir)) !== false){
      if (is_file($fichier)){//
         if (extension($fichier)){
            $fichiers[$x] = $fichier
            $x++;
        }
      }
    } 
    closedir($dir);
  }
}

function extension($fich){ // BEGIN function extension
    $extension = strtolower(pathinfo($fich, PATHINFO_EXTENSION));
       if ($extension == "jpg" || $extension == "jpeg" || $extension == "gif" || $extension == "png"){
        return true;
       }
} 
pour la variable $dossier j'ai essayé toutes les combinaisons possibles
./images
../livres/images/
etc. etc.

mais le résultat est toujours le même aucun fichier trouvé
merci de votre aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 juil. 2018, 09:45

Pourquoi mets-tu un "@" devant ta fonction opendir() ? L'arobace c'est pour masquer les messages d'erreur donc forcément difficile de debuguer avec ça.

Et sinon mon conseil serait d'utiliser plutôt la fonction glob() dans un foreach(), c'est + efficace et très facile à utiliser.
Tu as un exmeple tout fait dans la doc:
https://php.net/glob
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 2703 Messages

18 juil. 2018, 13:22

tout le code est présent ?
car il manque un ;
cela ne fait rien de la variable $fichiers
la fonction ne retourne rien explicitement dans le second cas.

Petit nouveau ! | 4 Messages

18 juil. 2018, 13:33

oui le ; est bien présent après $fichier

j'ai beau changer la variable $dossier dans tous les sens
../livres/images/
./images/
images
/images/
etc...


rien n'y fait

je précise que c'est un sur un site situé sur un nas synology avec synchro cloudSync sur gDrive
donc je fais les modifs sur mon drive ca le modifie sur mon nas et inversement
comme ca fonctionne pas je me suis dit j'ai mis ça sur mon site de chez free
db2p.free.fr/livres/
idem
le pluc con c'est que si je mets les images sur la racine donc dans le dossier livres la ca fonctionne ??????????

Petit nouveau ! | 4 Messages

18 juil. 2018, 20:28

bon ben j'ai trouve ce qui cloche
c'est la fonction
if (is_file($fichier)){//
si je l'enleve ca fonctionne...

mais il reste un probleme que là je ne m'explique pas hormis la différence de serveur

j'ai donc exactement les memes fichiers memes dossiers sur ma page free et sur mon nas synology
je veux donc afficher les images contenues dans le dossier images cela focntionne
maintenant dans le dossier vignettes ce sont les memes images mais plus petites pour un affichage plus rapide
je donne donc "vignettes/" comme nom de dossier et sur la page free pas de probleme ca les affichent (j'ai verifie dans le code source de la page) mais sur ma page web de mon nas impossible de les afficher ????????????????????????

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 juil. 2018, 03:24

sur ma page web de mon nas impossible de les afficher ????????????????????????
Il va falloir que tu fasses du debugage de ton côté, vérifies ma source de la page HTML générée, vérifie le contenu des variables avec var_dump(), vérifies les messages d'erreur dans tes logs serveur... car là, juste avec l'info "ça marche pas" on ne va pas pouvoir beaucoup t'aider
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 4 Messages

20 juil. 2018, 08:18

bonjour,

tout fonctionne enfin presque
c'est un truc simple ce sont des pages php qui gère mes livres sur mon nas synology http://db2p.synology.me/livres/
ça recherche des images dans le dossier images et en fonction du nom du fichier (titre_prenomauteur_nomauteur.jpg) extrait le titre et l'auteur et affiche celles-ci
le problème restant est que ça affiche bien les images dans le dossier images/ mais n'arrive pas a afficher celles du dossier vignettes/ (plus petites images pour gagner en rapidité d'affichage) qui se trouvent au même niveau ??????????
enfin comme j'ai dit il y a une synchro (CloudSync sur mon nas) sur mon google drive en bidirectionnel
normalement que je fasse des modifs sur l'un ou l'autre ca modifie en conséquence l'un ou l'autre
le problème qu'il y a en fait est que si je modifie sur mon nas (fichiers dans un web server) ça synchronise (CloudSync) bien sur mon drive
mais l'inverse n'est pas réellement la même chose car si je modifie les fichiers sur le drive, au niveau du nas (web server) ca le fait pas comme il faut
bref, faudra que je creuse encore...et plutot a voir sur le forum dédié au nas syno
merci en tout cas