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

Résolu/Fermé
chlow95 Messages postés 2 Date d'inscription lundi 9 octobre 2017 Statut Membre Dernière intervention 10 octobre 2017 - Modifié le 10 oct. 2017 à 09:16
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 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
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
10 oct. 2017 à 16:22
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 lundi 9 octobre 2017 Statut Membre Dernière intervention 10 octobre 2017
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 ....
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
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.
0