Signaler

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

Posez votre question chlow95 2Messages postés lundi 9 octobre 2017Date d'inscription 10 octobre 2017 Dernière intervention - Dernière réponse le 10 oct. 2017 à 17:34 par Pitet
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
Utile
+0
plus moins
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 2Messages 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 ....
Répondre
Pitet 2317Messages postés lundi 11 février 2013Date d'inscription 19 octobre 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.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !