Lecture répertoire en php

Bonjour,

Pourquoi quand j'utilise le code suivant :

  $mydir = 'fotos';
  if ($dir = @opendir($mydir)) {
    while (($file = readdir($dir)) !== false) {
      echo $file.'<br>';
      if($file != ".." && $file != ".") {
        if ($file == $fichier.'.jpg') {
          return "true";
        } else {
          return "false";
        }
      }
    }
  closedir($dir);
  }


Je n'obtient que :

.
..
null.jpg
false

Sachant que le dossier 'fotos' contient 69 fichiers .jpg. A signaler le fichier null.jpg est bien contenu dans ce dossier et est le premier de la liste.

Merci d'avance et meilleures salutations

7 réponses

  1. Essaye avec ceci :
    <?php
    function controlimage($fichier) {
      $mydir = 'fotos';
      
      if ($dir = @opendir($mydir)) {
        while (($file = readdir($dir)) !== false) {
          if($file != ".." && $file != ".") {
            if ($file == $fichier.'.jpg') {
              closedir($dir);
              return true;
            }
          }
        }
        closedir($dir);
        return false;
      }
    }
    1
    1. J'ai fait sous cette forme :
      function controlimage($fichier) {
        $mydir = 'fotos';
        if ($dir = @opendir($mydir)) {
          while (($file = readdir($dir)) !== false) {
            //echo $file.'<br>';
            if($file != ".." && $file != ".") {
              if ($file == $fichier.'.jpg') {
                return "true";
              } else {
                return "false";
              }
            }
          }
        closedir($dir);
        }
      }
      


      avec comme appel de la fonction :
      echo controlimage('pcod');
      (pcod.jpg est une image qui existe dans le répertoire photos)

      Cependant j'ai false à l'affichage
      0
    2. Ah, pardon, ça marche maintenant, je n'avais pas vu que tu avais rajouté un closedir.

      Merci à toi avion F-16
      0
    3. true et false sont des mots-clés en PHP, inutile de mettre des guillemets autour.
      En ajoutant la partie « else { return false; } », tu provoques l'arrêt de la fonction au premier fichier.
      0
  2. Je m'étais planté dans l'envoi, mais maintenant c'est complet
    0
    1. Vous avez comme résultat la condition du if
      .. .

      Est-ce que le echo $file.'<br>'; s'affiche correctement ?

      Vous pouvez expliquer ce que vous souhaitez faire ici:
      if($file != ".." && $file != ".") {
      if ($file == $fichier.'.jpg') {
      return "true";
      } else {
      return "false";
      }
      }
      0
      1. Salut,

        Quel est le but rechercher ?
        Si tu souhaites simplement lister le répertoire, il y a une partie inutile dans ce script.

        Essaye plutôt avec ceci :
        <?php
        if ($handle = opendir('fotos')) {
        
            while (false !== ($file = readdir($handle))) {
                if($file != '.' && $file != '..') {
                    echo $file."<br/>\n";
                }
            }
        
            closedir($handle);
        }
        0
        1. Le code complet est dans une fonction :

          function controlimage($fichier) { 
            $mydir = 'fotos'; 
            if ($dir = @opendir($mydir)) { 
              while (($file = readdir($dir)) !== false) { 
                echo $file.'<br>'; 
                if($file != ".." && $file != ".") { 
                  if ($file == $fichier.'.jpg') { 
                    return "true"; 
                  } else { 
                    return "false"; 
                  } 
                } 
              } 
            closedir($dir); 
            } 
          } 
          


          Le but est d'obtenir true si le fichier $fichier existe dans le répertoiret false sinon (j'ai mis des guillemet autour de true et false dans le code juste pour que les tests m'affiche ça en texte).

          Mais je sens que quelqu'un va me sortir une fonction toute faite qui existe déjà pour mon problème.
          0
          1. If (isset($fichier)) {
            echo 'existe'; }
            else { echo 'existe pas'; }
            0
            1. inutilisable sous cette forme :
                $file = 'fotos/'.$fichier;
                If (isset($file)) {
              echo 'existe'; }
              else { echo 'existe pas';
              }
              


              car la variable existera forcément ni sous celle-ci :

                If (isset('fotos/'.$fichier)) {
              echo 'existe'; }
              else { echo 'existe pas';
              }
              


              Car introduction d'une constante
              0