Incompréhension php effacement contenuDossier

Résolu/Fermé
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 - Modifié par necro27 le 18/06/2010 à 15:37
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 - 18 juin 2010 à 17:15
Bonjour à tous,

Bon pour une fois je ne poste pas pour avoir une réponse mais pour avoir une explication sur un morceau de code que je n'arrive pas à comprendre.. Tout fonctionne, aucun souci de ce coté la..

Voici le code j'explique après :

$handle=opendir('photosverif/');    
 while ($fichier = readdir($handle))    
 {    
  echo $handle.'//1//';   
  if ($fichier != "." && $fichier != "..")     
  {   
   echo $handle.'//2//';   
   $supfichier="photosverif/$fichier";   
   echo $supfichier;   
   unlink($supfichier);   
   echo $handle.'//3//';   
  }   
 }   
 closedir($handle);   


Avec les 'echo' j'ai le résultat suivant :

Resource id #6   
//1//   
Resource id #6   
//1//   
Resource id #6   
//1//   

Resource id #6   
//2//   
photosverif/image1.jpg   
Resource id #6   
//3//   
Resource id #6   
//1//   
Resource id #6   
//2//   
photosverif/image2.jpg   
Resource id #6   
//3//   
Resource id #6   
//1//   
Resource id #6   
//2//   
photosverif/Thumbs.db   
Resource id #6   
//3//   
Resource id #6   
//1//   
Resource id #6   
//2//   
photosverif/image3.jpg   
Resource id #6   
//3//   


Bon maintenant explications :
Je développe un site internet où l'administrateur doit pouvoir ajouter des photos sur les pages de ce site, sans toucher au code.

J'ai donc un dossier provisoire dans lequel j'importe des photos récupérées à l'aide d'un input de type file.

Ce dossier provisoire, contient pour mes tests 3 photos, image1, 2 & 3.

Ensuite de ce dossier provisoire, j'aimerai, si confirmation, déplacer l'image du dossier provisoire dans un autre dossier, qui sera celui au final qui contiendra les images du site. Une fois la copie effectuée, j'efface donc le contenu du dossier provisoire.

Plus clair :
j'ai 2 dossiers
--> "photos"
--> "photosverif" (--> dossier provisoire)

Mon souci d'incompréhension est donc le suivant..(j'ai mis la ligne en gras sur le premier code.)

if ($fichier != "." && $fichier != "..")


pourquoi tester sur des points...J'ai beau chercher sur le net je ne trouve rien de précis, clair ou je ne sais quoi d'autre encore. Si quelqu'un pouvait prendre le temps pour m'expliquer, cela serait vraiment très sympa car j'aime comprendre les codes que j'utilise.

Et de plus je pense que pour les modifications que je veux y apporter, cela me semble utile (transfert d'un fichier d'un dossier à l'autre).

ps : j'ai trouvé ce morceau de code sur un forum, dont je n'ai pas l'adresse sous la main.

Voilà, merci beaucoup d'avance.

Necro27
A voir également:

1 réponse

fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
18 juin 2010 à 16:26
Salut !

Ca provient du scan de tes différents dossiers, dans tes arborescences tu vas te trouver avec des . et .. (répertoire courant et répertoire parent), c'est pour un souci de lisibilité ^^
0
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
18 juin 2010 à 16:34
salut, tous d'abord merci, c'est gentil.

Donc en fait je n'ai en aucun cas besoin de modifier cette ligne ?

Par exemple, en aucun cas je n'aurais besoin de faire

if ($fichier != "." && $fichier != ".." && $fichier != "...")etc..


Hummm non ok je crois que j'ai compris, un "." signifie donc toujours répertoire courant et ".." repertoire parent ? Mais comment cette valeur arrive t'elle ?

Je veux dire, comment $fichier fait il pour prendre la valeur "." ? c'est donc sur chaque passage d'un répertoire courant ? quand je dit que je ne comprend pas je ne fais pas semblant....mdr

Et en termes de souci de lisibilité comme tu dis, c'est la compréhension du serveur ? ou pour nous ? (chose que je doute, mais je demande quand même :-s )
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
18 juin 2010 à 16:39
Pour la lisibilité ca dépend ce que t'en fais après ^^. mais ce n'est pas propre a php. J'ai du faire cette vérification pour un script en Perl une fois.

En fait, c'est juste que le scan des fichiers de ton arborescence va aussi prendre en compte le fichier "." et le fichier ".." . Disons que l'ordi navigue comme ca entre ces répertoires et que ton scan, scan tout et vraiment toute l'arborescence ^^.

Arrete toi à "..", je ne crois pas que "..." existe ^^. Ptet une notion de grand parent ? :D
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
18 juin 2010 à 16:40
Bonjour,

Il s'agit d'une convention.
Tout dossier, même vide, contient les répertoires "." et "..", qui, donc, pointent vers "lui-même" et vers "le dossier parent".
Donc, fatalement, quand tu fais while ($fichier = readdir($handle)) tu vas finir par tomber dessus.

Xavier
0
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
18 juin 2010 à 17:15
Bonjour Xavier, et re fxtaa, oui c'est bon je vois merci bien.

Petit clin d'oeil a fxtaa pour la notion de grand parent, ça m'a bien fait rire.

Sinon d'accord je comprend mieux en effet, donc en aucun cas je n'ai à y toucher.

ça fait plaisir d'avoir des personnes comme vous, encore merci et bonne soirée à vous.

Necro27
0