par
hacknours » 10 juil. 2011, 18:12
Bonjour à tous,
Je rencontre actuellement des difficultés à trier les noms de dossiers et sous dossiers dans l'ordre alphabétique afin de les renvoyer à Flash...
Voici un script PHP permettant de récupérer (dans l'ordre alphabétique) uniquement le nom des dossiers :
<?php
//le chemin d'accès $path devient relatif au dossier courant
$path = "../".basename(dirname(__FILE__));
//using the opendir function
$dir_handle = @opendir($path) or die("Unable to open $path");
$niveau = 1;
$niveaumax = 2;
list_dir($dir_handle,$path,1);
function list_dir($dir_handle,$path,$niveau)
{
//running the while loop
while (false !== ($file = readdir($dir_handle)))
{
$dir =$path.'/'.$file;
if(!in_array($file,array(".","..")) && is_dir($dir))
{
$files_array[] = $file;
}
}
sort($files_array);
foreach($files_array as $file)
{
if ($file != '.' && $file !='..')
{
$lala +=1;
$renvoi ="nomDossier".$lala."=".substr($file,0)."?";
$mauvais = array("&", "?");
$bon = array("%26", "&");
$renv = str_replace($mauvais, $bon, $renvoi);
$rend = $rend.$renv;
}
}
echo $rend."totalDossier=".$lala;
//closing the directory
closedir($dir_handle);
}
?>
Ce code fonctionne bien... Cependant il ne récupère pas les nom des sous dossiers...
Voici un script PHP permettant de récupérer le nom des dossiers et des sous dossier, mais qui hélas ne les tris pas dans l'ordre alphabétique :
<?php
$path = "../".basename(dirname(__FILE__));
//using the opendir function
$dir_handle = @opendir($path) or die("Unable to open $path");
$niveau = 1;
list_dir($dir_handle,$path,1);
function list_dir($dir_handle,$path,$niveau)
{
global $ret;
while (false !== ($file = readdir($dir_handle))) {
$dir =$path.'/'.$file;
if(is_dir($dir) && $file != '.' && $file !='..' )
{
static $lala;
if($niveau==1){
$lala+=1;
echo "nomDossier".$lala."=".$file."&"; }
if($niveau==2){
$lulu+=1;
echo "souDossier".$lulu."duDossier".$lala."=".$file."&";
}
$handle = opendir($dir) or die("undable to open file $file");
list_dir($handle, $dir,$niveau+1);
}
}
if ($lala){
$ret = $lala;
}
//closing the directory
closedir($dir_handle);
}
echo "totalDossier=".$ret;
?>
Auriez vous une idée pour pouvoir combiner ces deux scripts ??
Voici ce que j'ai essayer pour les combiner :
<?php
//le chemin d'accès $path devient relatif au dossier courant
$path = "../".basename(dirname(__FILE__));
//using the opendir function
$dir_handle = @opendir($path) or die("Unable to open $path");
$niveau = 1;
$niveaumax = 2;
list_dir($dir_handle,$path,1);
function list_dir($dir_handle,$path,$niveau)
{
//running the while loop
while (false !== ($file = readdir($dir_handle)))
{
$dir =$path.'/'.$file;
if(!in_array($file,array(".","..")) && is_dir($dir))
{
$files_array[] = $file;
}
if(is_dir($dir) && $file != '.' && $file !='..' )
{
$handle = opendir($dir) or die("undable to open file $file");
list_dir($handle, $dir,$niveau+1);
}
}
sort($files_array);
foreach($files_array as $file)
{
if ($file != '.' && $file !='..')
{
static $lala;
if($niveau==1){
$lala+=1;
$renvoi ="nomDossier".$lala."=".$file."?"; }
if($niveau==2){
$lulu+=1;
$renvoi ="souDossier".$lulu."duDossier".$lala."=".$file."?";
}
$mauvais = array("&", "?");
$bon = array("%26", "&");
$renv = str_replace($mauvais, $bon, $renvoi);
$rend = $rend.$renv;
}
}
echo $rend."totalDossier=".$lala;
//closing the directory
closedir($dir_handle);
}
?>
Hélas cette technique me sort des erreurs du type : sort() expects parameter 1 to be array et Invalid argument supplied for foreach()
Auriez vous un conseil à me donner car je ne comprend pas

Bonjour à tous,
Je rencontre actuellement des difficultés à trier les noms de dossiers et sous dossiers dans l'ordre alphabétique afin de les renvoyer à Flash... :oops:
Voici un script PHP permettant de récupérer (dans l'ordre alphabétique) uniquement le nom des dossiers :
[php]<?php
//le chemin d'accès $path devient relatif au dossier courant
$path = "../".basename(dirname(__FILE__));
//using the opendir function
$dir_handle = @opendir($path) or die("Unable to open $path");
$niveau = 1;
$niveaumax = 2;
list_dir($dir_handle,$path,1);
function list_dir($dir_handle,$path,$niveau)
{
//running the while loop
while (false !== ($file = readdir($dir_handle)))
{
$dir =$path.'/'.$file;
if(!in_array($file,array(".","..")) && is_dir($dir))
{
$files_array[] = $file;
}
}
sort($files_array);
foreach($files_array as $file)
{
if ($file != '.' && $file !='..')
{
$lala +=1;
$renvoi ="nomDossier".$lala."=".substr($file,0)."?";
$mauvais = array("&", "?");
$bon = array("%26", "&");
$renv = str_replace($mauvais, $bon, $renvoi);
$rend = $rend.$renv;
}
}
echo $rend."totalDossier=".$lala;
//closing the directory
closedir($dir_handle);
}
?>[/php]
Ce code fonctionne bien... Cependant il ne récupère pas les nom des sous dossiers...
Voici un script PHP permettant de récupérer le nom des dossiers et des sous dossier, mais qui hélas ne les tris pas dans l'ordre alphabétique :
[php]<?php
$path = "../".basename(dirname(__FILE__));
//using the opendir function
$dir_handle = @opendir($path) or die("Unable to open $path");
$niveau = 1;
list_dir($dir_handle,$path,1);
function list_dir($dir_handle,$path,$niveau)
{
global $ret;
while (false !== ($file = readdir($dir_handle))) {
$dir =$path.'/'.$file;
if(is_dir($dir) && $file != '.' && $file !='..' )
{
static $lala;
if($niveau==1){
$lala+=1;
echo "nomDossier".$lala."=".$file."&"; }
if($niveau==2){
$lulu+=1;
echo "souDossier".$lulu."duDossier".$lala."=".$file."&";
}
$handle = opendir($dir) or die("undable to open file $file");
list_dir($handle, $dir,$niveau+1);
}
}
if ($lala){
$ret = $lala;
}
//closing the directory
closedir($dir_handle);
}
echo "totalDossier=".$ret;
?>[/php]
Auriez vous une idée pour pouvoir combiner ces deux scripts ?? :?:
Voici ce que j'ai essayer pour les combiner :
[php]<?php
//le chemin d'accès $path devient relatif au dossier courant
$path = "../".basename(dirname(__FILE__));
//using the opendir function
$dir_handle = @opendir($path) or die("Unable to open $path");
$niveau = 1;
$niveaumax = 2;
list_dir($dir_handle,$path,1);
function list_dir($dir_handle,$path,$niveau)
{
//running the while loop
while (false !== ($file = readdir($dir_handle)))
{
$dir =$path.'/'.$file;
if(!in_array($file,array(".","..")) && is_dir($dir))
{
$files_array[] = $file;
}
if(is_dir($dir) && $file != '.' && $file !='..' )
{
$handle = opendir($dir) or die("undable to open file $file");
list_dir($handle, $dir,$niveau+1);
}
}
sort($files_array);
foreach($files_array as $file)
{
if ($file != '.' && $file !='..')
{
static $lala;
if($niveau==1){
$lala+=1;
$renvoi ="nomDossier".$lala."=".$file."?"; }
if($niveau==2){
$lulu+=1;
$renvoi ="souDossier".$lulu."duDossier".$lala."=".$file."?";
}
$mauvais = array("&", "?");
$bon = array("%26", "&");
$renv = str_replace($mauvais, $bon, $renvoi);
$rend = $rend.$renv;
}
}
echo $rend."totalDossier=".$lala;
//closing the directory
closedir($dir_handle);
}
?>[/php]
Hélas cette technique me sort des erreurs du type : sort() expects parameter 1 to be array et Invalid argument supplied for foreach() :|
Auriez vous un conseil à me donner car je ne comprend pas :cry: