Des petites améliorations ) un script PHP ?

Fermé
corentin.bc Messages postés 383 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 - Modifié par NHenry le 31/08/2016 à 20:04
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 1 sept. 2016 à 12:02
Bonsoir,
j'ai le code suivant :
<?php
$nb_fichier = 0;
echo '<ul>';
?>
<?php
if($dossier = opendir('./logiciels'))
{
?>
<?php
while(false !== ($fichier = readdir($dossier)))
{
?>
<?php
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
?>
<?php
$nb_fichier++; // On incrémente le compteur de 1
echo '<li><a href="./mondossier/' . $fichier . '" rel="nofollow" target="_blank">' . $fichier . '</a></li>';
} // On ferme le if (qui permet de ne pas afficher index.php, etc.)
} // On termine la boucle
?>
<?php
echo '</ul><br />';
echo 'Il y a <strong>' . $nb_fichier .'</strong> fichier(s) dans le dossier';
closedir($dossier);
}
else
echo 'Le dossier n\' a pas pu être ouvert';
?>

j'aimerais 3 choses :
que le script n'affiche pas le fichier .htaccess,
que le script n'affiche pas les dossiers redirections et portables,
que le script affiche les dossiers avant les fichiers.
Comment faire tout cela ?

Merci beaucoup !

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

Amicalement! Corentin.
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 525
Modifié par Pitet le 1/09/2016 à 12:02
Salut,

Une solution possible serait de remplacer l'utilisation de readdir par la fonction glob qui permet de récupérer la liste des fichiers directement dans un tableau.

A partir de ce tableau de fichier, on peut effectuer deux boucles pour le parcourir, la première n'affichera que les dossiers et la seconde que les fichiers.
(Idéalement on pourrait utiliser une seule boucle en triant le tableau avec une fonction de tri personnalisée pour que les dossiers soient en premier)

Enfin on peut vérifier à chaque fois qu'on affiche un fichier ou un dossier si ce-dernier fait partie des fichiers ou dossiers qu'on ne souhaite pas afficher (tel que tu le fait actuellement pour le fichier index.php ainsi que les dossiers spéciaux . et ..).

Un début de solution :
<?php 

// liste des fichiers et dossiers contenu dans ./logiciel
$files = glob('./logiciels/*');

// dossiers à ne pas afficher
$dirExclude = array('redirections', 'portables');
// fichier à ne pas afficher
$filesExclude = array('index.php', '.htaccess');

echo '<ul>';

// affichage des dossiers
foreach($files as $file) {
 $filename = basename($file);
 
 if (is_dir($file) && !in_array($filename, $dirExclude)) {
  echo '<li>' . $filename . '</li>';
 }
}

// affichage des fichiers
foreach($files as $file) {
 $filename = basename($file);
 
 if (is_file($file) && !in_array($filename, $filesExclude)) {
  echo '<li>' . $filename . '</li>';
 }
}

echo '</ul>';


Bonne journée,
0