begin process at 2012 05 27 19:06:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > LISTER LES FICHIERS D'UN DOSSIER, ET EN FAIRE DES LIENS

LISTER LES FICHIERS D'UN DOSSIER, ET EN FAIRE DES LIENS


 Information sur la source

Note :
6,25 / 10 - par 4 personnes
6,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :17/05/2005 Date de mise à jour :18/05/2005 10:41:41 Vu :5 071

Auteur : mtrzen

Ecrire un message privé
Site perso
Commentaire sur cette source (39)
Ajouter un commentaire et/ou une note

 Description

Voila, le but de ceci est pour moi de lister les fichiers contenus dans un dossier qui sera par la suite disponible a des utilisateurs. via des lien a Href

Source

  • if ($Repertoire == 'EspacePerso')//si le dossier == dossier a ne pas lister, rien ne se passe
  • {
  • }ELSE{
  • if (is_dir($Repertoire))
  • {
  • $dir = opendir($Repertoire); //ouvre le repertoire courant désigné par la variable
  • while($file = readdir($dir))
  • {
  • //on lit tout et on récupere tout les fichiers dans $file
  • if(!in_array($file, array(".","..")))
  • {
  • //on eleve le parent et le courant '. et ..'
  • //sort l extension du fichier
  • $page = explode("/", $file);
  • $page = explode(".", ($page[count($page)-1]));
  • $nom_fichier = $page[0];
  • $ext_fichier = $page[1];
  • if($ext_fichier=='php')
  • {
  • }Else{
  • if($ext_fichier=='')
  • {
  • }Else{
  • echo '<a href="'.$Repertoire.'/'.$file.'">----';
  • echo $nom_fichier;
  • echo '</a>';
  • echo ' - '.$ext_fichier;
  • echo '<br>';
  • }
  • }
  • }
  • }
  • }
  • }
  • ?>
if ($Repertoire == 'EspacePerso')//si le dossier == dossier a ne pas lister, rien ne se passe
	{
	}ELSE{

	if (is_dir($Repertoire)) 
		{
		$dir = opendir($Repertoire); //ouvre le repertoire courant désigné par la variable
	
		while($file = readdir($dir))
			{ 
			//on lit tout et on récupere tout les fichiers dans $file

			if(!in_array($file, array(".","..")))
				{
				//on eleve le parent et le courant '. et ..' 

                                        //sort l extension du fichier
					$page = explode("/", $file);
					$page = explode(".", ($page[count($page)-1]));
					$nom_fichier = $page[0];
					$ext_fichier = $page[1];

					if($ext_fichier=='php')
						{
						}Else{
						if($ext_fichier=='')
							{
							}Else{
							echo '<a href="'.$Repertoire.'/'.$file.'">----';
							echo $nom_fichier;
							echo '</a>';
							echo ' - '.$ext_fichier;
							echo '<br>';
						}
					}
				}	
			} 
		}
	}
?> 

 Conclusion

$Repertoire est le repertoire a cibler
'EspacePerso' est un dossier a ne pas lister

Je pense que c'est optimisable, vu que je suis novice en php, alors n'ésitez pas a commenter


Essayer ici http://grg666.free.fr
avec le code  phpcs


 Historique

18 mai 2005 10:41:41 :
rajout d'un exemple

 Sources du même auteur

AFFICHAGE DE LA METEO PAR DEPARTEMENT

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

Commentaires et avis

Commentaire de malalam le 18/05/2005 10:09:28 administrateur CS

Hello,

while($file = readdir($dir))
doit etre
while(false !==($file = readdir($dir)))

et je n'ai pas bien pige tes if () {} :
# if($ext_fichier=='php')
#                         {
#                         }Else{
#                         if($ext_fichier=='')
#                             {
#                             }Else{

Ca sert a quoi...?
Enfin je comprends a quoi ca sert, mais pourquoi n'as tu pas fait l'inverse ?
if ($ext_fichier !=== '' && $ext_fichier !== 'php') {
  ton code
  }
Idem pour ton premier if ().
<br> devrait etre <br />, mais bon.

Sinon rien a dire, ca doit fonctionner.

Commentaire de mtrzen le 18/05/2005 10:45:26

Désolé, je débute en php.
Pourquoi while(false !==($file = readdir($dir)))
  enfin pourquoi false !==

qu'est-ce que le !===   dans le If

et sinon quel interet du <br /> ? ca permet d'éviter des failles ou de mauvaises interpretation du serveur?

Commentaire de malalam le 18/05/2005 10:56:38 administrateur CS

Le false : parce que la doc php le dit comme ca ;-)
Non, c'est simple : les operateurs de comparaisons sont == ou === (ou != et !== par exemple). Dans le premier cas, il ne faut pas oublier que php n'est pas un language tres type...or, on ne compare pas sur le type. Dans le second cas, on compare aussi  sur le type (les deux valeurs doivent etre de meme type).
Ce qui veut dire que, avec ton code, si ton script tombe sur un fichier qui s'appelle 0, il va s'arreter.  Parce que tu lui dis "si mon read dir renvoie 0, tu t'arretes). Avec ma proposition, il ne s'arretera pas parce qu'il faudra que ce fichier soit de type booleen, et que sa valeur soit exactement equivalente a false.

Le <br />, non, c'est juste la norme w3c pour le xhtml, et me semble t il aussi pour le html 4.01 : tous les elements doivent etre fermes. Donc soit on a un element imbriquant une valeur (<a...> valeur </a>) et la c#est facile. Soit on a un element qui n'imprique pas de valeur (<br />) auquel cas il faut l'ecrire de cette maniere.

Commentaire de mtrzen le 18/05/2005 11:54:32

okay merci
ce sataner "0" qu'il ne faut pas négliger. Je me souviens sur un BBS, le simple fait de demander l affichage du post "0" permetait d afficher l integralité des posts.. de quoi faire fumer le pauvre serveur perso derriere

Commentaire de malalam le 18/05/2005 12:21:00 administrateur CS

Bah, ce serait moins drole s'il n'y avait aucune subtilites ;-)
T'as connu les bbs toi...?

Commentaire de mtrzen le 18/05/2005 13:15:07

les BBS vivent encore (cf. parano.be)

Commentaire de mtrzen le 18/05/2005 13:47:19

avec ta solution
if ($ext_fichier !=== '' && $ext_fichier !== 'php')

Parse error: parse error, unexpected '=' in /var/www/free.fr/e/7/grg666/**/**/**/fichier.php on line 18

et si je met
if ($ext_fichier !== '' && $ext_fichier !== 'php')
ca liste les dossiers... :'(

Commentaire de fuckya le 18/05/2005 13:56:46

Ca existe pas les !=== ;)

Commentaire de malalam le 18/05/2005 14:05:37 administrateur CS

Oops, c'est ma faute, j'en ai mis 3 de =, mais uniquement dans le 1er. J'avais vu mais je n'ai pas releve pensant que tu corrigerais tout seul en voyant mon explication, et la seconde comparaison...
Pour le listage :
tu fais ton if qu dit : si l'extension est differente d'une chaine vide ou de la chaine 'php'...
et la tu ouvres une jolie accolade, tu mets ton code, puis tu la fermes (l'accolade... ;-) )
Ton code actuel a trop de {} et de if ()...ne le corrige pas, reprends le, ce sera plus simple et evitera les erreurs de conception lol.

if ($ext_fichier !== '' && $ext_fichier !== 'php'){
    echo '<a href="'.$Repertoire.'/'.$file.'">----';
    echo $nom_fichier;
    echo '</a>';
    echo ' - '.$ext_fichier;
    echo '<br>';
    }

Commentaire de mtrzen le 18/05/2005 15:15:15

En faite, l'avantage de ma formule est de pouvoir avoir un fichier autonome, qui de plus es laisse l'option d afficher les dossiers ou non, et celle de revenir en arriere ou non.

<?php

echo '<a href="..">retour</a><br />';//mettre 2 antislashs pour empcher le retour

$dir = opendir('.');
while($file = readdir($dir))
{ //on lit tout et on récupere tout les fichiers dans $file
if(!in_array($file, array(".","..")))
{ //on eleve le parent et le courant '. et ..'
//sort l extension du fichier
$page = explode("/", $file);
$page = explode(".", ($page[count($page)-1]));
$nom_fichier = $page[0];
$ext_fichier = $page[1];
if($nom_fichier=='index')
{
}Else{

//pour activer le masque des dossiers, supprimer les 4 antislashs suivants
// if($ext_fichier=='')
// {
// }Else{
echo '<a href="'.$file.'">';
echo $nom_fichier; echo '</a>';
echo ' - '.$ext_fichier;
echo '<br>';
// }
}
}
}
?>

voici un code enregistrable dans un dossier INDEX.PHP... pratique, je viens de le moduler pour un ami qui stock des tas de photos sur son ftp; sans rien connaitre a la prog..

Commentaire de malalam le 18/05/2005 16:07:46 administrateur CS

Bah si tu faisais une fonction avec des parametres...ce serait encore plus simple.
$affphp = true | false
$affnull = true | false

voire meme mettre juste les extensions non desirees dans un tableau et passer ce tableau en parametre a ta fonction, et la condition qui va avec (if (!in_array($ext_fichiers, $tableau_extensions)) alors on affiche

Commentaire de Anthomicro le 18/05/2005 18:26:02

Salut,

if ($Repertoire == 'EspacePerso')

tu pourrais plutôt mettre dans un array tes noms de dossiers à ne pas lister et à faire un if(in_array($machin...

a +

Commentaire de Kayar le 19/05/2005 07:09:15

pourquoi tu met ca :
if($ext_fichier=='') {
}Else{
echo '<a href="'.$file.'">';
echo $nom_fichier; echo '</a>';
echo ' - '.$ext_fichier;
echo '<br>';
}

Il y a plus simple :
if($ext_fichier!='') {
echo '<a href="'.$file.'">';
echo $nom_fichier; echo '</a>';
echo ' - '.$ext_fichier;
echo '<br>';
}

Et ca amène a la meme chose.

Commentaire de mtrzen le 19/05/2005 10:10:05

C est pour l evolution du Script :) ce trou va laisser la place a des actions différentes en cas de dossier ;)

Bon je me penche sur l utilisation des tableaux et je modifi tout cela

Commentaire de garfield90 le 19/05/2005 10:55:03

Salut,

pour déterminer si c'est un fichier utilise ( is_file) et pour un repertoire (is_dir)
un fichier peut ne pas avoir d'extension

Commentaire de malalam le 19/05/2005 11:30:56 administrateur CS

D'ailleurts a ce propos, il y a d'autres failles dans ton script.
Tu fais un explode sur le ".". Ok, mais moi je nomme mes fichiers classes ainsi :
myclass.cls.php
Tu ne vas recuperer que cls avec ton systeme, demandant directement le $page[1].
Tu ne testes pas non plus si tu as bien un tableau en sortie de tes explode, donc en cas de fichier sans extension...
Et je ne comprends toujours pas ta sombre histoire de "trous" lol...

Commentaire de twisteurwin le 19/05/2005 12:14:53

"Commentaire de : garfield90 > pour déterminer si c'est un fichier utilise ( is_file) et pour un repertoire (is_dir)
un fichier peut ne pas avoir d'extension"

Au contraire un fichier porte une extension mais pas un repertoire...:-)

Commentaire de garfield90 le 19/05/2005 12:29:36

>> Twisteurwin

Utilisateur windows,va ;)

par exemple: les fichiers .htaccess et .htpasswd ont des extensions , non !
ici, le point permet de dire au systeme en particulier *nix que c'est un fichier caché,  si mes souvenirs sont bons

Rien ne t'empeche de ne pas donner d'extension sous Windows en plus, le pb c'est que windows associe les programmes en fonctions de l'extension et non du type de fichier (cf MIME)

Sur ce bon app

Commentaire de malalam le 19/05/2005 12:29:52 administrateur CS

=> twisteurwin : pas forcement...et en tous cas, ce ne sera certainement pas verifiable de cette maniere. je peux creer un repertoire s'appelant "mon.repertoire" si je veux. Et un fichier "monfichier". Et je ne parle pas de Linux...

Commentaire de garfield90 le 19/05/2005 12:30:56

Malalam : Presque synchro ;)

Commentaire de malalam le 19/05/2005 12:33:27 administrateur CS

C'est de la triche, j'ai eu une erreur 500!! ;-)

Commentaire de twisteurwin le 19/05/2005 12:40:01

Ok avec vous !
Un fichier a toujours une association l'extension n'est pas obligatoire...soit...
Un repertoire ne s'associe pas à un programme...
vala jpeux me tromper...mais jcrois en moi lol

Commentaire de garfield90 le 19/05/2005 12:54:59

>> Twisteurwin : No problem, le but de ce site est d'apprendre, non.
>> Malalam : moi, aussi mais le message est passé ;)

Commentaire de malalam le 19/05/2005 16:19:15 administrateur CS

MTRZEN => l'erreur 500 c'etait sur le forum, pas sur ton code ;-)
Quant aux failles, je te l'ai dit un peu plus haut.

Commentaire de Anthomicro le 19/05/2005 18:05:32

C'est pas vraiment une faille vu le but du script, plutôt un bug dirons-nous ;-)

Commentaire de mtrzen le 20/05/2005 15:17:20



Voici la nouvelle version du script...
Bon, je n'ai pas integré les .htacces et autres, et laisser la possibilité de voir les fichier *.php.*

apr contre Pathinfo() me permet de naviguer sur le nom du dossier








<html><head>
<!-- CSS Stylesheet -->
<style type="text/css">
<!--
a:VISITED {
color : #000099;
text-decoration : none;
}
a:HOVER {
color: #6666FF;
}
a:LINK {
color : #0000AA;
text-decoration : none;
}
.bas
{
background-color: #F9F9F9;
color: #666666;
font: 6pt geneva, lucida, veranda,'lucida grande', arial, helvetica, sans-serif;
text-align: center;
width: 320px;
MARGIN-TOP: 20px;
}
.dossier
{
background-color: #BBBBBB;
color: #000000;
font: 10pt verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
MARGIN-TOP: 5px;
MARGIN-BOTTOM: 5px;
MARGIN-LEFT: 5px;
MARGIN-RIGHT: 5px;
text-align: left;
border-left: thin solid Green;
border-right: thin solid Green;
border-top: thin solid Green;
border-bottom: thin solid Green;
scrollbar-base-color: #f2f2f2;
scrollbar-track-color: #f9fafa;
scrollbar-face-color: #F1F1F1;
scrollbar-highlight-color: #ffffff;
scrollbar-3dlight-color: #ffffff;
scrollbar-darkshadow-color: #ffffff;
scrollbar-shadow-color: #C8C8CA;
scrollbar-arrow-color: #999999;
width: 320px;

}
.boite
{
background-color: #DDDDDD;
color: #333333;
font: 9pt verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
MARGIN-TOP: 0px;
MARGIN-BOTTOM: 0px;
MARGIN-LEFT: 10px;
MARGIN-RIGHT: 10px;
border-top: thin dotted Blue;
border-bottom: thin solid Blue;
scrollbar-base-color: #f2f2f2;
scrollbar-track-color: #f9fafa;
scrollbar-face-color: #F1F1F1;
scrollbar-highlight-color: #ffffff;
scrollbar-3dlight-color: #ffffff;
scrollbar-darkshadow-color: #ffffff;
scrollbar-shadow-color: #C8C8CA;
scrollbar-arrow-color: #999999;
width: 300px;
}
</style>
</head><body>

<?php
If ($Repertoire == '..')
{
$Repertoire = '.';
}
If ($Repertoire == '')
{
$Repertoire = '.';
}
?>
<div class=dossier>

<?php
echo '<b>';
echo '<a href="?Repertoire=.">SITE OUEB</a>';
$Chemin = explode("/", $Repertoire);
$xxxx = 1;
while($Chemin[$xxxx])
{
echo '<a href="?Repertoire=.';
$xxx = 1;
while($xxx !== $xxxx + 1)
{
echo '/'.$Chemin[$xxx];
$xxx = $xxx + 1;
}
echo '">/'.$Chemin[$xxxx];
$xxxx = $xxxx +1;
echo '</a>';
}
echo '</b>';
?>

<br />
<br />
<div class=boite>
<br />
<?php


$Exeption1 = ".";
$Exeption2 = "..";
$Exeption3 = 'php';


$dir = opendir($Repertoire);
while(False !== ($file = readdir($dir)))
{
if(!in_array($file, array($Exeption1,$Exeption2)))
{
$path_parts = pathinfo($file);
if ($path_parts['extension']=='')
{
echo $path_parts['dirname'].'.........';
echo '<a href="?Dir='.$Dir.'&Repertoire='.$Repertoire.'/'.$path_parts['basename'].'">';
echo $path_parts['basename'].'</a><br />';
}Else
{
//sort le nom du fichier
$page = explode("/", $file);
$page = explode(".", ($page[count($page)-1]));
$nom_fichier = $page[0];

if ($path_parts['extension']!==$Exeption3)
{
echo $path_parts['dirname'].'<a href="'.$Repertoire.'/'.$file.'">';
echo $nom_fichier; echo '</a>';
echo ' - '.$path_parts['extension'].' - ';
echo '<br>';
}
}
}
}
?>

<br />
</div>
<div class=bas>
<?php
echo '<a href="http://grg666.free.fr">-Easy Explo Web-</a> ';
echo 'version 0.8 du 20/05/2005';
echo '<br />derniere maj : **censured**';
echo '<br />soft : LucCaCorpo'
?>

</div>
</div>
</body>
</html>

Commentaire de malalam le 22/05/2005 18:02:33 administrateur CS

Hello,

tu insistes avec les trucs lourds lol ;-)
<?php
If ($Repertoire == '..')
{
$Repertoire = '.';
}
If ($Repertoire == '')
{
$Repertoire = '.';
}
?>
Pourquoi ne pas mettre if ($Repertoire == '.' || $Repertoire == '..') {} ?
Ensuite heu...pourquoi faire ca, tout simplement, lol ?
Ensuite, pourquoi tu crees autant de variables Exceptions ? Pourquoi pas un tableau direct...au lieu de le creer a la volee ensuite dans ton in_array() ?
$path_parts['extension']=='' => empty($path_parts['extension']) devrait fonctionner. Pas sur que ce soit plus rapide, mais c'est plus joli :-)
Bon...j'ai la flemme de continuer et pas trop le temps : mais tu devrais faire une fonction de ce truc, quand meme, ce serait plus utile.

Commentaire de Anthomicro le 22/05/2005 18:27:07

mes trois signes :

if($Repertoire==='..')
{

}

etc...

je suis fâché avec les doubles égal ^^

Commentaire de fuckya le 22/05/2005 19:27:53

Fâché avec l'orthographe aussi ^^

Non j'rigole c'est juste qu'on dit les doubles égaux au pluriel :D

Commentaire de Anthomicro le 22/05/2005 21:03:36

je sais j'aurais dû mettre entre guillemets le "égal" ;-)

Commentaire de dream303 le 01/09/2005 11:48:17

Merci a toi MTRZEN, ta source fonctionne très bien et m'a rendue service !
A+ et bonne continuation !
www.dream303.tk

Commentaire de mtrzen le 01/09/2005 12:01:48

en faite, j ai mis au point une toute nouvelle version de ce script, bien plus complexe, bien plus aboutit, enfin bref, bientot un post aboutira ladessus

dailleurs faites attention ce script comporte une grosse faille... et plusieurs petites

Commentaire de Anthomicro le 01/09/2005 12:03:55

Il serait donc bien de les signaler (j'ai la flemme de matter désolé)

Commentaire de mtrzen le 01/09/2005 12:27:01

il suffit de tripatouiller l url pour la trouver

sinon, ce qui est a faire c mettre le repertoire a explorer ailleurs que le dans le meme dossier que le fichier d exploration

Commentaire de dream303 le 01/09/2005 12:39:02

MTRZEN, j'utilise ton script depuis ce matin mais j'aimerais trier les fichiers de la liste par nom. Est-ce que c'est possible ? (Perso je vois pas comment faire ...)

Commentaire de dream303 le 02/09/2005 10:23:43

Bon, c'est pas grave, quelqu'un d'autre m'a aidé sur cette page
http://www.phpcs.com/code.aspx?ID=33593

Commentaire de Evangun le 02/09/2005 13:40:03

Effectivement, la même source mais en bien mieux :
http://www.phpcs.com/code.aspx?ID=33593

Commentaire de Anthomicro le 02/09/2005 13:51:39

mdr

Commentaire de dream303 le 02/09/2005 13:52:13

lol

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales