Question sur while

Eléphant du PHP | 418 Messages

05 déc. 2012, 17:04

Salutation

Voici ma question:

J'ai un script qui me permet de lister les sous dossier et les fichiers contenus dans ses dernières, appartenant à un dossier qu'on va nommer pour l'exemple, Contenant.

Lorsque de fait mon while pour lister les sous-dossiers et les fichiers, j'aimerais les afficher dans l’ordre inverse que celui par défaut, à savoir alphabétique et décroissant (du Z au A)

Comment feriez vous cela?, sachant que je ne fait pas le while à partir d'une requête sql.

Mon script
$p=(isset($_GET['p'])) ?$_GET['p']:'';
$cfg = 'dossier_racine/dossier_visse';
$source=$p;
	$dossier = opendir($cfg);
	echo '<div id="aside"><ul>';
	while($fichier = readdir($dossier)){
	$nom = str_replace('.php', '', $fichier);
		if(is_file($cfg.'/'.$fichier) && $fichier !='/' && $fichier !='.' && $fichier != '..'){
			echo '<li><a href="index.php?p='.$source.'&t='.$fichier.'">'.$nom.'</a></li>';
		}
	}
	echo '</ul></div>';
	closedir($dossier);
Merci beaucoup

Cordialement

ViPHP
xTG
ViPHP | 7331 Messages

05 déc. 2012, 17:23

Tu fais un parcours qui n'affiche rien mais qui stocke tout dans un array.
Puis tu transformes ton array obtenu dans la moulinette de ton choix.
Et enfin tu parcours ton array pour afficher. :)
$a = array('b', 'c', 'a');
$f = array();
$i = 0;

// parcours et stockage
while( $i < count($a) ){
  $f[] = $a[$i];
  $i++;
}

// traitement
sort($f);

// affichage => a b c
foreach($f as $val)
  echo $val;

Eléphant du PHP | 418 Messages

05 déc. 2012, 17:36

Bin j'ai compris le truc, mais juste, comment je sort le tableau $a[] ?

Merci en tout cas, j'aurais appris encore un truc ^^

Cordialement

Eléphant du PHP | 343 Messages

05 déc. 2012, 18:07

Avec glob (http://php.net/manual/fr/function.glob.php), si j'ai bien compris ce que tu voulais faire.

Edit: sans glob tu peux aussi faire quelque chose comme:
$tab[]= $fichier;
dans ton while

et un
arsort($tab);
foreach ($tab as $fichier_autre_ordre) echo $fichier_autre_ordre;
en fin de fichier
Développeur web

Mammouth du PHP | 2278 Messages

05 déc. 2012, 21:54

Il serait beaucoup plus joli à mon sens de créer un tableau ordonné dans le while:
Initialisation du tableau avec le premier nom de fichier
tant qu'il y a des noms de fichiers
si le nom de fichier est "inférieur suivant ta fonction" au premier nom de fichier , insertion au début array_unshift
sinon si le nom de fichier est "supérieur suivant ta fonction" au premier nom de fichier , insertion à la fin array_push
sinon lui chercher une place et l'y insérer.

fin detantque
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD