Bonsoir,
Dans ton code, il y'a peut-être un problème dans ta boucle WHILE.
Dans un premier temps, fais une boucle ne retenant que les répertoires.
Ensuite, refais une autre boucle pour ne retenir que ce qui n'est pas des répertoires (regardes mon exemple).
Ainsi, dans la première boucle ton premier "Echo" ne vas afficher que les répertoires.
Ensuite, dans la seconde boucle "Echo" ne vas afficher que les fichiers.
Tu as fait des "Echo" dans une fonction, pourquoi pas mais je pense que ce n'est pas très propre.
Remplaces "Echo" par "$html .=" ( ".=" pour l'aditionner au précédent).
Sans oublier de faire un "return $html;" à la fin de ta fonction pour qu'il te renvoie la valeur.
Valeur que tu vas récupérer en faisant : $html = ExploreDir ("mon_repertoire" );
Valeur que tu vas afficher en faisant "Echo $html;"
Je n'ai pas tout vérifié, mais là tu devrais vraiment être sur la voie pour résoudre ton problème.