IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fonctionnement etrange de readdir


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Points : 28
    Points
    28
    Par défaut fonctionnement etrange de readdir
    Bonjour,

    Je voudrais faire une simple page qui liste tous les dossiers et leur contenu (1 seul niveau) contenu dans un dossier parent, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
    //dossiers
    $softDir    = 'specifications/softwares';
    $dossiers = scandir($softDir);
    //fichiers
    for ($i = 0;$i <= count($dossiers); $i++) {
    	if (($dossiers[$i]!=".")and($dossiers[$i]!="..")){
    ?>
     
    <tr>
    	<td width="65" height="20" valign="top"><!--DWLayoutEmptyCell-->&nbsp;</td>
        <td colspan="2" valign="top" class="blueBold"><?php echo ($dossiers[$i]); ?></td>
    </tr>
     
    <?php
     		$subDir=$softDir."/".$dossiers[$i];
     		$dh = opendir($subDir);
    		$fichier=readdir($dh);
     
    		while (($fichier = readdir($dh)) !== false) {
          		if (($fichier!=".")and($fichier!="..")){ 
    ?>
     
    <tr>
        <td height="20" colspan="2" valign="top"></td>
       	<td width="474" valign="top"><a href="<?php  echo ($subDir."/".$fichier); ?>" target="_blank"><?php echo "$fichier"; ?></td>
    </tr>
     
    <?php
     			}
     		}
      		closedir($dh);
      	}
    }	
    ?>
    Je suis suppose n'avoir que la partie entouree de rouge, mais j'obtiens davantage de cellules en bas, remplies avec le nom de chaque dossier uniquement par la variable $fichier, utilisee avant pour lire le contenu des dossiers eux-mêmes. (fichier image joint).



    Est-ce un probleme de code ou d'interaction html/php?


    merci de votre aide.
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Si ca peut t'aider c'est un exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    <?php
    // repertoires/extensions à ignorer dans les dossiers
    $foldersListIgnore = array ('.','..');
    $extListAccept = array ('php','php3','php4','htm','html', 'pdf', 'png');
     
    // recuperation des dossiers
    $handle=opendir('.');
    $tableau='';
    $nbr_files=0;
     
    // boucle sur les éléments du dossier
    while ($file = readdir($handle)) 
    {
    	// teste s'il s'agit d'un élément autorisé
    	if (!in_array($file,$foldersListIgnore)) {
    		// teste s'il s'agit d'un dossier
    		if (is_dir($file)) {
    			$subfolder=opendir($file);
    			$ext=substr($subfolder,-3);
    			// teste s'il y a des sous-dossiers et combien de sous-items il y a
    			while ($subfolderContents = readdir($subfolder)) 
    			{
    				// teste les fichiers du sous-dossiers et leurs extensions
    				if (!in_array($subfolderContents,$foldersListIgnore)) {
    				$listing[$subfolder]=$nbr_files;
    				}
    				$nbr_files++;
    			}
    			$nbr_files =($nbr_files-2);
    			// sous-résultat
    			$folderContents .= '<li>'.$k.'<a href="'.$file.'/">'.$file.'</a>&nbsp;('.$nbr_files.')</li>';
    			$nbr_files = 0;
    		}
    		// teste s'il s'agit d'un fichier
    		else if (is_file($file)) {
    			// extrait l'extension du fichier
    			$ext = substr($file,-4);
    			if (stristr($ext, '.') === FALSE) {
    				$ext = $ext;
    			}
    			else {
    				$ext = substr($ext,-3);
    			}
    			// vérifie si l'extension est autorisée dans le listing
    			if (in_array($ext,$extListAccept)) {
    				$file_name = $file;
    				// sous-résultat
    				$folderContents .= '<li>'.$k.'<a href="'.$file_name.'">'.$file_name.'</a></li>';
    			}
    		}
    		// teste s'il s'agit d'un fichier
    		else {
    			echo 'format de fichier non reconnu';
    		}
    	}
    }
    // ferme le parcours du dossier
    closedir($handle);
     
    // teste si la liste des dossiers n'est pas nulle
    if (!isset($folderContents))
    	$folderContents = 'le dossier est vide';
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html lang="en" xml:lang="en">
    <head>
    	<title><?php echo $_SERVER['PHP_SELF'];?></title>
    	<meta http-equiv="Content-Type" content="txt/html; charset=utf-8" />
    </head>
    <body>
    	<h2><?php echo $_SERVER['PHP_SELF'];?></h2>
    	<ul>
    		<?php echo $folderContents;?>
    	</ul>
    </body>
    </html>
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Points : 28
    Points
    28
    Par défaut
    Merci bluice,

    J'ai reussi a fixer le probleme en encapsulant le code htlm pour creer mes cellules dans le code php avec "echo".



    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Etrange fonctionnement Jquery
    Par gueguenk dans le forum jQuery
    Réponses: 2
    Dernier message: 21/03/2013, 10h51
  2. datatable, fonctionnement etrange
    Par koack dans le forum JSF
    Réponses: 5
    Dernier message: 17/02/2011, 13h54
  3. Fonctionnement tres etrange de openMP
    Par uriotcea dans le forum Threads & Processus
    Réponses: 6
    Dernier message: 14/11/2009, 19h27
  4. Réponses: 1
    Dernier message: 03/08/2007, 16h42
  5. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo