Lecture répertoire en php

csi_bern Messages postés 72 Statut Membre -  
avion-f16 Messages postés 20367 Statut Contributeur -
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

A voir également:

7 réponses

avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
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
csi_bern Messages postés 72 Statut Membre 2
 
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
csi_bern Messages postés 72 Statut Membre 2
 
Ah, pardon, ça marche maintenant, je n'avais pas vu que tu avais rajouté un closedir.

Merci à toi avion F-16
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
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
patrice86 Messages postés 1520 Statut Membre 125
 
Super comme sujet ! =)
0
csi_bern Messages postés 72 Statut Membre 2
 
Je m'étais planté dans l'envoi, mais maintenant c'est complet
0
patrice86 Messages postés 1520 Statut Membre 125
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
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
csi_bern Messages postés 72 Statut Membre 2
 
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
patrice86 Messages postés 1520 Statut Membre 125
 
If (isset($fichier)) {
echo 'existe'; }
else { echo 'existe pas'; }
0
csi_bern Messages postés 72 Statut Membre 2
 
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