Afficher le contenu d'un répertoire en ordre alphabétique [Résolu]

chlow95 2 Messages postés lundi 9 octobre 2017Date d'inscription 10 octobre 2017 Dernière intervention - 9 oct. 2017 à 22:24 - Dernière réponse : Pitet 2362 Messages postés lundi 11 février 2013Date d'inscription 30 novembre 2017 Dernière intervention
- 10 oct. 2017 à 17:34
bonsoir à tous,
j'utilise un petit script php pour afficher les répertoires existants sur mon site web,
tout fonctionne mais l'affichage est sans ordre, je voudrais les trier par ordre alphabétique, quelles modifs à apporter sur mon script que voilà :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?
// Par défaut : anglais
$directoryListing = "Folders in server root (\"www\")";
$noDir = "no folder";
$presentation = "This page display folders in server root. You can delete this page if you want to organize differently the folder. There'e a backup oh this file in "safe" directory (index-safe.php).";
$accueil = "Bienvenue chez CVCOM";

$browser_languages = explode(",", getenv("HTTP_ACCEPT_LANGUAGE"));
$nb_browser_languages = sizeof($browser_languages);
$browser_lang = ""; // ne pas initialiser
$biContinue = true;

for ($niI = 0; $biContinue==true && $niI < $nb_browser_languages; $niI++)
{
 $biContinue = false;
 $lg = explode("-", $browser_languages[$niI]);
 switch ($lg[0])
 {
 case "fr" : $directoryListing = "Nos sites ";
    $noDir = "aucun répertoire";
    $presentation = "Cette page permet de visualiser les répertoires placés à la racine du serveur. Si vous souhaitez organiser autrement le répertoire "www", vous pouvez effacer ce fichier. Il en existe une copie de sauvegarde dans le répertoire "safe" (index-safe.php).";
    break;
 case "en" : break;
 default: $biContinue = true;
 }
}
    
?>
<html>
<head>

<style type="text/css">
.text1 {font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: White;text-align : left;}
.text2 {font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: Silver;text-align : left;}
.titre1 {font-family: Arial, Helvetica, sans-serif;font-size: 28px;font-weight: bold;color: #FFFFFF;}
.titre2 {font-family: Arial, Helvetica, sans-serif;font-size: 28px;font-weight: bold;color: #cccccc;}
</style>
</head>

<body bgcolor="#525A73">
 
<div align="center">
<table width="400" cellspacing="0" cellpadding="0" border="0" align="center">
<tr>
<td width="100%" nowrap class="titre1">        </td>
<td><img src="logo_bureau.gif" width="960" height="509" border="0"></a>
</td>
</tr>
<tr>
</table>
</div>

<table width="500" border="0" cellspacing="4" cellpadding="0" align="center">
<tr> 
<td><img src="cube_rouge_small.gif" width="18" height="20"></td>
<td width="100%" nowrap class="titre1"> <? echo $directoryListing; ?> :</td>
</tr>
</table>

<table width="500" border="0" cellspacing="2" cellpadding="0" align="center">
<?
$rep=opendir('.');
$bAuMoinsUnRepertoire = false;
while ($file = readdir($rep)){
 if($file != '..' && $file !='.' && $file !=''){ 
  if (is_dir($file)){
   $bAuMoinsUnRepertoire = true;
   print("<tr><td nowrap class='text1'>      </td>");
   print("<td width='100%' class='text1'>");
   print("  <img src='dossier.gif' width='23' height='16' align='absbottom'> ");
   print("<a href='$file/' rel="nofollow noopener noreferrer" target="_blank" class='text1'>$file</a>");
   print("</td></tr>");
  }
 }
}
if ($bAuMoinsUnRepertoire == false) {
 print("<tr><td nowrap class='text1'><div align='center'>-  $noDir  -</div></td>");
 print("</td></tr>");
}

closedir($rep);
clearstatcache();
?>
</table>

<br>

<table width="500" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td class="text1">
 
</td>
</tr>
</table>
</body>
</html>

EDIT : AJout des balises de code

merci d'avance de votre aide car pour le site ça va, mais le php ne m'est pas familier
Afficher la suite 
2Messages postés lundi 9 octobre 2017Date d'inscription 10 octobre 2017 Dernière intervention

3 réponses

Répondre au sujet
Pitet 2362 Messages postés lundi 11 février 2013Date d'inscription 30 novembre 2017 Dernière intervention - 10 oct. 2017 à 16:22
0
Utile
2
Salut,

Une solution possible est, avant l'affichage, de récupérer les dossiers dans un tableau php puis d'utiliser la fonction php asort() sur ce tableau pour trier les dossiers, puis utiliser ce tableau pour l'affichage.

Exemple :
// tableau des noms de dossiers
$directories = array();

// on récupère tous les dossiers du dossier courant
// j'utilise glob pour récupérer les dossiers plus facilement mais il est possible d'utiliser les fonctions opendir() et readdir()
$globResults = glob('./*', GLOB_ONLYDIR);

// pour chaque dossier récupéré, on ajoute son nom dans le tableau $directories
foreach ($globResults as $result) {
    $directories[] = basename($result);
}

// on tri le tableau $directories
asort($directories);

// on affiche le tableau $directories
foreach ($directories as $dir) {
    echo $dir . '<br>';
}


Bonne journée,
chlow95 2 Messages postés lundi 9 octobre 2017Date d'inscription 10 octobre 2017 Dernière intervention - 10 oct. 2017 à 16:46
merci bien, mais ce bout de code je l'ajoute où dans mon script ?
question bête je sais mais ....
Pitet 2362 Messages postés lundi 11 février 2013Date d'inscription 30 novembre 2017 Dernière intervention - 10 oct. 2017 à 17:34
Il n'y a pas de code à ajouter dans ton script, il s'agit d'un exemple pour expliquer le principe afin que tu puisses adapter ton code.
Commenter la réponse de Pitet