8792 sujets

Développement web côté serveur, CMS

Bonjour,

Suite de mon topic précédent concernant le listing d'un dossier

En fait, tout fonctionne comme prévu, mais j'ai remarqué que l'ordre alphabétique n'était pas respecté... Sur PHPRessources j'ai trouvé ceci mais je ne sais pas trop comment l'intégrer à mon bout de code PHP sans perdre les effets obtenus auparavant grâce à votre aide sur mon autre topic...

Pour l'instant, mon code est :

				<?php
				$dossier='./choregraphies/fichestechniques/';
				if ($lister = opendir($dossier))
				{
				while (false !== ($file = readdir($lister)))
					{
					if ($file != '.' && $file != '..')
						{
						$noext=substr($file,0,strrpos($file,'.'));
						$maj = str_replace('_',' ',$noext);
						echo '<a href="./choregraphies/fichestechniques/',$file,'" onclick="window.open(this.href,\'_blank\'); return false">',ucwords($maj),'</a><br />';
						}
					}
				closedir($lister);
				clearstatcache();
				}
				?> 



Je suppose que, pour aller dans le sens du tuto que j'ai trouvé, je devrais déplacer l'echo dans le bas, en le remplaçant par l'envoi dans un tableau ( $ListFiles[$i]=$file;), mais une fois là, je ne vois pas vraiment comment remettre le reste de mon code obtenu sur mon autre topic...

Si quelqu'un pouvait m'aider, ce serait bien gentil Smiley smile

Merci d'avance Smiley cligne
Modifié par SolykZ (17 Nov 2006 - 21:00)
Bon, j'ai un début de solution mais maintenant mes liens sont vides !

<?php
$dossier='./choregraphies/fichestechniques/';
$i=0;
if ($lister = opendir($dossier))
	{
	while (false !== ($file = readdir($lister)))
		{
		if ($file != '.' && $file != '..')
			{
				$noext=substr($file,0,strrpos($file,'.'));
				$maj = str_replace('_',' ',$noext);
				// on passe les datas dans un tableau
				$ListFiles[$i]=$maj;
				$i++;
			}
	}
closedir($lister);
clearstatcache();

  if(count($ListFiles)!=0)
  {
     if($list_tri == 'NAME')
     {
         rsort($ListFiles);
     }
     else
     {
         sort($ListFiles);
     }
  }

  $i=0;
  while ( $i < count($ListFiles))
	{
		echo '<a href="./choregraphies/fichestechniques/',$file,'" onclick="window.open(this.href,\'_blank\'); return false">',ucwords($ListFiles[$i]),'</a><br />';
		$i++;
	}
}
?>
Non non, chez 123.fr ! Jusqu'à présent tout allait bien, mais depuis que j'ai ajouté le code pour le listing par ordre alphabétique, les liens pointent vers le dossier conteneur des fichiers à lister, et non vers ces mêmes fichiers !

Là je teste avec la méthode scandir, on verra bien ce que ça dit Smiley smile
Non c'est pas pour ça, Free désactive la fonction glob() bien plus simple regardes :
<?php
$dir='ton_dossier';
$type_de_fichier='*'; // tous

$fichiers=glob($dir.'/'.$types);
natcasesort($fichiers);

echo '<pre>';
print_r($fichiers);
echo '</pre>';
?>


Testes ça sur un simple dossier en interne et tu va comprendre. Smiley cligne
Euh... Ben... Ca donne ça... Smiley rolleyes

Array
(
    [0] => choregraphies/
)

Modifié par SolykZ (17 Nov 2006 - 17:55)
SolykZ a écrit :
Euh... Ben... Ca donne ça... Smiley rolleyes

Array
(
    [0] => choregraphies/
)


Oui et ?
Fais voir ce que tu as mis dans $dir.
Bah j'ai mit


<?php

$dir='choregraphies';
$type_de_fichier='*'; // tous
$fichiers=glob($dir.'/'.$types);
natcasesort($fichiers);

echo '<pre>';
print_r($fichiers);
echo '</pre>';
?>


Pourquoi ??
J'en reviens donc au résultat de départ : Listing des fichiers *.html du dossier "choregraphies/fichestechniques", où les underscores sont remplacés par des espaces et la première lettre de chaque mot devient une majuscule ! Ceci concerne bien évidemment les noms affichés sur la page contenant le code, et non les noms de fichiers eux-mêmes (les liens seraient donc cassés)

Mon problème actuellement est d'afficher la liste par ordre alphabétique !

Voici mon code :

<?php
$dossier='./choregraphies/fichestechniques/';
if ($lister = opendir($dossier))
{
while (false !== ($file = readdir($lister)))
	{
	if ($file != '.' && $file != '..')
		{
		$noext=substr($file,0,strrpos($file,'.'));
		$maj = str_replace('_',' ',$noext);
		echo '<a href="./choregraphies/fichestechniques/',$file,'" onclick="window.open(this.href,\'_blank\'); return false">',ucwords($maj),'</a><br />';
		}
	}
closedir($lister);
clearstatcache();
}
?> 


J'ai essayé diverses méthodes, dont celles proposées ci-dessus mais elles ne me fournissent pas le résultat escompté, ou alors cela finit par une page vide !

Je ne vois plus trop quoi faire... Le PHP c'est nouveau pour moi, et donc même avec toute la meilleure volonté du monde, sans un peu d'aide je ne risque pas d'arriver à quoi que ce soit de valable !

Si quelqu'un se sent capable de me donner un coup de pouce, merci d'avance Smiley smile
Modifié par SolykZ (12 Dec 2006 - 04:03)
Effectivement, ça marche nettement mieux ! J'ai compris mon erreur, en fait j'avais placé les lignes n'importe comment -_-'

Voilà le code, au cas où ça pourrait aider quelqu'un Smiley cligne (Sait-on jamais Smiley smile )
Modifié par SolykZ (24 Feb 2007 - 04:54)
Ce que je t'ai donné fonctionne parfaitement !
Je ne vois pas pourquoi tu fais un test avec "choregraphies" quand le dossier complet est "choregraphies/fichestechniques"


$dir='choregraphies/fichestechniques';

$type_de_fichier='*.html'; // tous les html

$fichiers=glob($dir.'/'.$types);

sort($fichiers);

foreach($fichiers as $val)
{
echo $val,'<br />';
}
?>


Voilà, tout le dossier est lister.
Le reste est à adapter en fonction de ce que je t'ai donné précédement.
Administrateur
$dir='choregraphies/fichestechniques';
[#red]$type_de_fichier[/#]='*.html'; // tous les html
$fichiers=glob($dir.'/'.[#red]$types[/#]);
sort($fichiers);
foreach($fichiers as $val)
{
echo $val,'<br />';
}
?>

Y a pas un emmêlage de variable là? Ou bien d'où sort $types? Smiley confuse
Felipe a écrit :
Y a pas un emmêlage de variable là? Ou bien d'où sort $types? Smiley confuse


Bah oui, justement ! Et même en corrigeant ça, j'obtenais pas le résultat souhaîté !
Modifié par SolykZ (12 Dec 2006 - 04:04)
Oui tu as raison, erreur de frappe !
$type_de_fichier ou $types c'est kifkif du moment qu'on utilise les mêmes.

Donc :
<?php
$types='*.html'; // tous les html
$fichiers=glob($dir.'/'.$types);
?>