Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/09/2007, 20h29   #1
Nouveau Membre du Club
 
Homme Johan
Inscription : décembre 2006
Messages : 131
Détails du profil
Informations personnelles :
Nom : Homme Johan
Âge : 27
Localisation : France

Informations forums :
Inscription : décembre 2006
Messages : 131
Points : 32
Points : 32
Envoyer un message via MSN à Hotfirenet
Par défaut Lecture de répertoires avec classement par fichiers/dossiers

bonjour a tous et merci pour la lecture ;-)

voila ce que je cherche a faire:
surement deja exposé mais je n'est pas trouver dans les forums,


j'ai une fonction recursive qui parcours mes repertoires, tout fonctionne mise a part le classement !

Je m'explique ce que je voudrais que cette fonction fasse c'est de lister les repertoires puis les fichiers or, actuellement elle liste tout dans l'ordre aphabetique sans se soucier de savoir si c'est un repertoire ou un fichier

voici ce que j'ai fait

Code :
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
 
<?php
 
$exclus = array ('.', '..', 'miniature', 'index.html', 'Thumbs.db');
 
function explore($homedir) 
	{   
	global $exclus;
    $dir = openDir($homedir);
    while ($file = readDir($dir)) 
		{
		if (!in_array($file, $exclus)) 
			{
            if (is_dir($homedir.'/'.$file)) 
				{
				echo '<blockquote><img src="templates/images/dossier.png" height="32" width="32" /><a href="test.php?home='.$homedir.'/'.$file.'">'.$file.'</a></blockquote>';
				//explore("$homedir/$file");
				} 
			elseif(is_file($homedir.'/'.$file))
				{
                $cheminComplet = $homedir.'/'.$file;
				echo '<blockquote>'.$cheminComplet.'<br/></blockquote>';
				}
			}
		}
    closeDir($dir);
	}
 
// Définition du chemin à explorer
if(isset($_GET['home']))
	{
	$home = $_GET['home'];
	}
else
	{
	$home = 'galerie';
	}
 
// L'appel à la fonction
explore($home);
?>
Merci d'avance
Hotfirenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 20h58   #2
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Voici ma solution, surement pas la plus élégante, mais qui devrait marcher.
Code :
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
 
<?php
$cpt1=0;
$cpt2=0;
 
$exclus = array ('.', '..', 'miniature', 'index.html', 'Thumbs.db');
 
function explore($homedir) 
	{  
        global $cpt1;
        global $cpt2; 
       global $tab_fichier;
       global $tab_dossier;
	global $exclus;
    $dir = openDir($homedir);
    while ($file = readDir($dir)) 
		{
		if (!in_array($file, $exclus)) 
			{
            if (is_dir($homedir.'/'.$file)) 
				{
				$tab_dossier[$cpt1]= '<blockquote><img src="templates/images/dossier.png" height="32" width="32" /><a href="test.php?home='.$homedir.'/'.$file.'">'.$file.'</a></blockquote>';
                                $cpt1++;
				} 
			elseif(is_file($homedir.'/'.$file))
				{
                $cheminComplet = $homedir.'/'.$file;
				$tab_fichier[$cpt2]='<blockquote>'.$cheminComplet.'<br/></blockquote>';
 
                      $cpt2++;
				}
			}
		}
    closeDir($dir);
	}
 
// Définition du chemin à explorer
if(isset($_GET['home']))
	{
	$home = $_GET['home'];
	}
else
	{
	$home = 'galerie';
	}
 
// L'appel à la fonction
explore($home);
foreach ($tab_dossier as $dossier){
echo $dossier[chemin];
}
foreach ($tab_fichier as $fichier){
echo $fichier[chemin];
}
 
?>
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 22h18   #3
Nouveau Membre du Club
 
Homme Johan
Inscription : décembre 2006
Messages : 131
Détails du profil
Informations personnelles :
Nom : Homme Johan
Âge : 27
Localisation : France

Informations forums :
Inscription : décembre 2006
Messages : 131
Points : 32
Points : 32
Envoyer un message via MSN à Hotfirenet
Par défaut erreur

j'ai une erreur ligne 52

Code :
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
 
<?php
$cpt1=0;
$cpt2=0;
 
$exclus = array ('.', '..', 'miniature', 'index.html', 'Thumbs.db');
 
function explore($homedir) 
	{  
        global $cpt1;
        global $cpt2; 
       global $tab_fichier;
       global $tab_dossier;
	global $exclus;
    $dir = openDir($homedir);
    while ($file = readDir($dir)) 
		{
		if (!in_array($file, $exclus)) 
			{
            if (is_dir($homedir.'/'.$file)) 
				{
				$tab_dossier[$cpt1] = '<blockquote><img src="templates/images/dossier.png" height="32" width="32" /><a href="test.php?home='.$homedir.'/'.$file.'">'.$file.'</a></blockquote>';
                $cpt1++;
				} 
			elseif(is_file($homedir.'/'.$file))
				{
                $cheminComplet = $homedir.'/'.$file;
				$tab_fichier[$cpt2] = '<blockquote>'.$cheminComplet.'<br/></blockquote>';
				$cpt2++;
				}
			}
		}
    closeDir($dir);
	}
 
// Définition du chemin à explorer
if(isset($_GET['home']))
	{
	$home = $_GET['home'];
	}
else
	{
	$home = 'galerie';
	}
 
// L'appel à la fonction
explore($home);
 
foreach ($tab_dossier as $dossier)
	{
	echo $dossier[chemin];
	}
 
foreach ($tab_fichier as $fichier)
	{
	echo $fichier[chemin];
	}
 
?>
qui correspond a

Warning: Invalid argument supplied for foreach() in C:\wamp\www\mols\test.php on line 52
Hotfirenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 22h44   #4
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
oui, j'ai fait mon fainéant, l'erreur signifie que l'on passe au foreach un tableau vide et "foreach" n'aime pas ca.
Voici le code corrigé:
Code :
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
 
 
<?php
$cpt1=0;
$cpt2=0;
 
$exclus = array ('.', '..', 'miniature', 'index.html', 'Thumbs.db');
 
function explore($homedir) 
	{  
        global $cpt1;
        global $cpt2; 
       global $tab_fichier;
       global $tab_dossier;
	global $exclus;
    $dir = openDir($homedir);
    while ($file = readDir($dir)) 
		{
		if (!in_array($file, $exclus)) 
			{
            if (is_dir($homedir.'/'.$file)) 
				{
				$tab_dossier[$cpt1] = '<blockquote><img src="templates/images/dossier.png" height="32" width="32" /><a href="test.php?home='.$homedir.'/'.$file.'">'.$file.'</a></blockquote>';
                $cpt1++;
				} 
			elseif(is_file($homedir.'/'.$file))
				{
                $cheminComplet = $homedir.'/'.$file;
				$tab_fichier[$cpt2] = '<blockquote>'.$cheminComplet.'<br/></blockquote>';
				$cpt2++;
				}
			}
		}
    closeDir($dir);
	}
 
// Définition du chemin à explorer
if(isset($_GET['home']))
	{
	$home = $_GET['home'];
	}
else
	{
	$home = 'galerie';
	}
 
// L'appel à la fonction
explore($home);
 if(!empty($tab_dossier)){
foreach ($tab_dossier as $dossier)
	{
	echo $dossier;
	}
}
if(!empty($tab_fichier)){ 
foreach ($tab_fichier as $fichier)
	{
	echo $fichier;
	}
}
 
?>
Et sans le [chemin] à la fin dans le foreach (j'ai fait une erreur de copier / coller)
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 08h50   #5
Nouveau Membre du Club
 
Homme Johan
Inscription : décembre 2006
Messages : 131
Détails du profil
Informations personnelles :
Nom : Homme Johan
Âge : 27
Localisation : France

Informations forums :
Inscription : décembre 2006
Messages : 131
Points : 32
Points : 32
Envoyer un message via MSN à Hotfirenet
Ok merci ca fonctionne nikel

Encore merci
Hotfirenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h11.


 
 
 
 
Partenaires

Hébergement Web