8796 sujets

Développement web côté serveur, CMS

Bonjour par ici !
tout fraichement membre de ce forum je me permet de vous demander de l'aide en PHP
je cherche a lister toutes mes images JPG contenues dans différents dossiers(au même niveau).
Mais je voudrai non pas les classer par date de création mais par nom de fichiers...
tous mes fichiers JPG sont nommés de cette façon (et dans chaque repertoire c'est pareil):

01-affiche.jpg
02-affiche.jpg
03-affiche.jpg
04-....
05-etc

dans ma logique "01-affiche.jpg" devrait être le premier élément affiché...
malheureusement tout s'affiche en bordel..
ré-enregistrer toutes mes images 1 à 1 pour feinter la date de création ne m'arrange vraiment pas
si quelqu'un à une idée/solution je suis preneur

Pour info j'utilise ce bout de code.

/*function qui affiche des trucs à partir d autres trucs*/
function affiche_repfile($rep){
            //if ($handle = opendir($rep)) 
            if ($handle = opendir('images/PICTURES/'.$rep.'')) {
                while (false !== ($file = readdir($handle))) {
                       if ($file != '.' && $file != '..' && strrchr($file,".")=='.jpg')  {
                    $narray[$i]=$file;
                    $i++;
                    natcasesort($file);
                     echo "<a><img src=\"images/PICTURES/".$rep.$file."\" width=\"594\" height=\"420\" alt=\"".$val['alt']."\" class=\"slideimg\" /></a>\n";
                        }
                }
                closedir($handle);   
            }else{ echo'erreur lecture rep';}
            sort($narray);
//return $narray;
}


En cherchant a droite a gauche j'ai trouvé des infos sur sort(), usort() , natcasesort() mais rien n'y fait je n'arrive pas à le placer au bon endroit..
je suis un peu perdu.
Quelqu'un peut m'aider ?


edit: après avoir lu les règles j'ai hésiter avant de poster mais bon je tente ma chance
sinon désolé pour le bruit
Modifié par twixtop (14 Jan 2010 - 17:04)
Salut et bienvenue à toi,

twixtop a écrit :
edit: après avoir lu les règles j'ai hésiter avant de poster mais bon je tente ma chance
sinon désolé pour le bruit

Mais non mais non tu as bien fait, ton sujet colle à celui du forum et du salon, tu es poli et tu as essuyé tes pieds sur le paillasson avant d'entrer, donc pas de soucis ! Smiley smile
:) merci mikachu et bonjour à toi.
je continue mes recherches sur ce satané bout de code...
^_^
Hello,

comme j'ai déjà (quasiment) le code qui fait ça :
class listFiles {

	private $extension	= '';			// extension des fichiers à lister
	private $current_path	= '';		// chemin du répertoire en cours
	private $dirs_in_dir	= array();	// tableau des répertoires d'un répertoire
	private $files_in_dir	= array();	// tableau des fichiers d'un répertoire

	public function listFiles($Path = '.', $extension = 'jpg') {
		$this->extension = $extension;
		$this->listDirs($Path);
	}
	private function listDirs($Current_Path) {
		$this->current_path = $Current_Path;
		$this->dirs_in_dir = array();
		$this->files_in_dir = array();
		if ($handle = opendir($Current_Path)) {
			while (false !== ($file = readdir($handle))) {
				if ($file != "." && $file != "..") {
					$path = $Current_Path.'/'.$file;
					if (is_dir($path)) {
						$this->dirs_in_dir[]=$path;
					} else {
						// Est-ce que c'est la bonne extension ?
						$pathinfo = pathinfo($file);
						if ($pathinfo['extension'] == $this->extension) {
							$this->files_in_dir[]=$file;
						}
					}
				}
			}
		}
		closedir($handle);
		$this->display();
	}

	private function display() {
		$nb_files = count($this->files_in_dir) > 0;
		$nb_dirs  = count($this->dirs_in_dir) > 0;
		if($nb_files || $nb_dirs) {
			echo '<ul>'."\n";
			// Si des fichiers existent...
			if($nb_files) {
				$this->displayFiles();
			}
			// Si des dossiers existent...
			if($nb_dirs) {
				$this->displayDirs();
			}
			echo '</ul>'."\n";
		}
	}

	private function displayFiles() {
		sort($this->files_in_dir);  
		foreach ($this->files_in_dir as $file) {
			$href = $this->current_path.'/'.$file;
			echo '<li><a href="'.$href.'">'.$file.'</a></li>'."\n";
		}
	}


	private function displayDirs() {
		// Tri inverse
		rsort($this->dirs_in_dir);
		foreach ($this->dirs_in_dir as $dir) {
			echo '<li><h2 class="title">'.substr(strrchr($dir, "/"), 1).'</h2>';
			$this->listDirs($dir);
			echo '</li>'."\n";
		}
	}
}

//new listFiles();
//new listFiles('repert');
//new listFiles('repert1/repert2');
//new listFiles('repert1/repert2', 'ext');
new listFiles('include/images', 'jpg');
A adapter un peu...
Modifié par Heyoan (14 Jan 2010 - 17:02)
Heyoan
comment dire
..
tu assure
MERCI d'avoir pris du temps pour me répondre ça marche vraiment bien...
chapeau...

il faut rajouter [Resolu] dans le titre ?
Vraiment réactif ce forum!

Bonne année a tous !
Modifié par twixtop (14 Jan 2010 - 16:57)