Afficher le contenu d'un répertoire en ordre alphabétique

Résolu
chlow95 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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,
0
chlow95 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
merci bien, mais ce bout de code je l'ajoute où dans mon script ?
question bête je sais mais ....
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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.
0