Lire des dossier en ordre alphabétique

vrpl
Invité n'ayant pas de compte PHPfrance

05 avr. 2013, 12:01

Bonjour à tous,

j'utilise la portion de code ci-dessous pour générer une galerie de photos.
j'ai un dossier "photos", dedans des dossiers du type 20040514_Paris, 20060815_Nantes, 20100418_Bordeaux... etc. avec des JPG dedans

ce script m'affiche une photo de chaque dossier, ensuite je clique sur la photos et le script m'affiche toutes les photos du dossier, ça ça marche.
mais le script ne m'affiche pas dans l'ordre alphabétique (chronologique donc), j'ai ouïe dire que la fonction "sort" pourrais le faire, mais je ne trouve pas où la placer...

merci de votre aide

Code : Tout sélectionner

function parcours_dossier($chemin_dossier) { // On ouvre le dossier à lire $dossier = opendir($chemin_dossier); // On parcours l'ensemble des éléments présent dans le dossier while($element = readdir($dossier)) { // On ne s'occupe ni du répertoire courant ni du répertoire parent if(($element != ".") && ($element != "..") && ($element != ".DS_Store") && ($element != "text.html")) { // Si le fichier est un dossier if(file_exists($chemin_dossier."/".$element) && is_dir($chemin_dossier."/".$element)) { // On parcours les sous dossiers parcours_dossier($chemin_dossier."/".$element); } else { print "<div class=cadrephoto><a href=\"photos.php?gal=$chemin_dossier\"><img src=".$chemin_dossier."/".$element." width=\"100\" height=\"100\" class=photo></a>/div>\n"; break; } } } closedir($dossier); } // On appelle la fonction de parcours des dossiers parcours_dossier("photos");

Eléphant du PHP | 86 Messages

05 avr. 2013, 12:30

Salut,

Et bien au lieu d'afficher directement le résultat tu le stock dans un tableau avec comme clé l'élément à trier puis à la fin tu fais un ksort() sur ce tableau et tu affiche..

Dis nous si sa te va.

vrpl
Invité n'ayant pas de compte PHPfrance

05 avr. 2013, 13:26

Merci pour ta réponse !
mais c'est bien là que je coince, j'ai bien compris qu'il fallait faire un tableau, et un "sort", mais je n'arrive pas à trouver l'endroit ni la structure du code...

J'ai jamais été doué avec la fonction de tableaux...

Eléphant du PHP | 86 Messages

05 avr. 2013, 13:50

Et bien c'est comme je te l'ai dit plus haut, le stockage doit se faire à la place du print et le tri à la fin.
Test comme ça et dis nous si sa fonctionne...

vrpl
Invité n'ayant pas de compte PHPfrance

05 avr. 2013, 19:42

merci encore, mais je ne sais pas faire... j'essaye depuis plusieurs jours, rien n'y fait, je pige pas.

Eléphant du PHP | 86 Messages

06 avr. 2013, 12:49

Salut,

Et bien essai comme ça:
   function parcours_dossier($chemin_dossier)
   {
   
      // On ouvre le dossier à lire
      $dossier = opendir($chemin_dossier);

      // On parcours l'ensemble des éléments présent dans le dossier
         while($element = readdir($dossier))
         {
            // On ne s'occupe ni du répertoire courant ni du répertoire parent
            if(($element != ".") && ($element != "..") && ($element != ".DS_Store") && ($element != "text.html"))
            {
               // Si le fichier est un dossier
               if(file_exists($chemin_dossier."/".$element) && is_dir($chemin_dossier."/".$element))
               {
               // On parcours les sous dossiers
               $tab_file_temp = parcours_dossier($chemin_dossier."/".$element);
               $tab_file = array_merge($tab_file, $tab_file_temp);
               }

            else
            {
            $tab_file[$chemin_dossier."/".$element] = "<div class=cadrephoto><a href=\"photos.php?gal=$chemin_dossier\"><img src=".$chemin_dossier."/".$element." width=\"100\" height=\"100\"  class=photo></a>/div>";
            break;
            }

      }
}
closedir($dossier);
return $tab_file;
}
// On appelle la fonction de parcours des dossiers
$files = parcours_dossier("photos");
ksort($files);
files_aff = implode("\n", $files);
echo(files);

vrpl
Invité n'ayant pas de compte PHPfrance

28 avr. 2013, 11:09

re...
N'y arrivant pas j'ai mis ça de côté... mais la mise en ligne approche...

j'ai une erreur dans le code que tu m'a donné :

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in XXX on line 122

il semblerait aussi qu'il manque un "$" à la ligne
files_aff = implode("\n", $files);

:(

Eléphant du PHP | 86 Messages

28 avr. 2013, 11:30

Et comme ça est ce que sa fonctionne :
<?php
function parcours_dossier($chemin_dossier)
{
	//On declare le tableau
	$tab_file = array();
	// On ouvre le dossier à lire
	$dossier = opendir($chemin_dossier);
	
	// On parcours l'ensemble des éléments présent dans le dossier
	while($element = readdir($dossier))
	{
		// On ne s'occupe ni du répertoire courant ni du répertoire parent
		if(($element != ".") && ($element != "..") && ($element != ".DS_Store") && ($element != "text.html"))
		{
			// Si le fichier est un dossier
			if(file_exists($chemin_dossier."/".$element) && is_dir($chemin_dossier."/".$element))
			{
				// On parcours les sous dossiers
				$tab_file_temp = parcours_dossier($chemin_dossier."/".$element);
				$tab_file = array_merge($tab_file, $tab_file_temp);
			}
			
			else
			{
				$tab_file[$chemin_dossier."/".$element] = "<div class=cadrephoto><a href=\"photos.php?gal=$chemin_dossier\"><img src=".$chemin_dossier."/".$element." width=\"100\" height=\"100\"  class=photo></a>/div>";
				break;
			}
	
		}
	}
	closedir($dossier);
	return $tab_file;
}
// On appelle la fonction de parcours des dossiers
$files = parcours_dossier("photos");
ksort($files);
$files_aff = implode("\n", $files);
echo(files);
?>