PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 15-01-2010 10:48:06

twixtop
Membre
Inscription : 15-01-2010
Messages : 3

Encore un problème de tri / lecture multi rep ok / ordre photo bizarre

Bonjour par ici !
fraichement inscrit je m'empresse de vous demander de l'aide !
:)
j'essaye actuellement de lister des lots d'images depuis différents répertoires.
tant qu'il y a des fiches je recupère le titre, le texte, et les images donc.

je voudrai afficher ces images par ordre alphabétique
sachant que les noms de mes images sont a chaque fois de ce type :
01-zulu.jpg
02-boite.jpg
03-affiche.jpg
04-....
05-etc

la fonction qui marche (j'ai bien toutes mes images) mais le natcasesort() n'y change rien
j'ai essayé de le déplacer mais je me perd rapidemment
tout s'affiche un peu comme ça vient.. ^_^


/*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++;
           echo "<a><span class=\"more-icon\"> </span><span class=\"less-icon\"> </span><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;
}

 

et mon while :


  <div class="thumbs">
  <?php // tant qu'il y a des fiches
  while ($val = mysql_fetch_array($result))
{
    $rep = $val['repertoire'];
    // affiche un champ
    echo '<div class="oneref loading" id="l'.$val['numba'].'">
    <div class="sidebar"><h1>'
.$val['titre'].'</h1>
    <p>'
.$val['description'].'</p>
    </div>
      <div class="vizu">'
;
      affiche_repfile($rep);
    echo '</div>';//vizu
    echo '</div>';//oneref
} ?>               
</div><!--thumbs-->
 

quelqu'un à une idée du pourquoi du comment ?
merci d'avance pour vos pistes...

Dernière modification par twixtop (15-01-2010 11:31:23)

Hors ligne

#2 15-01-2010 11:18:28

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Encore un problème de tri / lecture multi rep ok / ordre photo bizarre

Saluton,
A quoi sert cette ligne de ton script  :

natcasesort($file);

readdir() retourne le nom du fichier suivant dans le dossier identifié par dir_handle . Les noms sont retournés dans l'ordre qu'ils sont enregistrés dans le système de fichiers.

donc $file est un nom de fichier.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 15-01-2010 11:29:37

twixtop
Membre
Inscription : 15-01-2010
Messages : 3

Re : Encore un problème de tri / lecture multi rep ok / ordre photo bizarre

je l'ai placé ici un peu par dépit je l'avoue...

je me suis trompé de fichier source
rhaaa
je modifie mon message...

Hors ligne

#4 15-01-2010 13:27:25

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Encore un problème de tri / lecture multi rep ok / ordre photo bizarre

Tu fais l'affichage (echo) dans la boucle, avant le classement, donc

sort($narray);

ne sert à rien


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 15-01-2010 15:57:30

twixtop
Membre
Inscription : 15-01-2010
Messages : 3

Re : Encore un problème de tri / lecture multi rep ok / ordre photo bizarre

oké. merci kris..
je prend note et maintenant que tu me le dis, ça me parait évident ! ^_^
j'ai trouvé une autre façon sur alsacréations a adapter évidement
si ça peut aider qqun...
autant partager , merci à heyoan !


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');
 


Néanmoins j'aurai bien aimé savoir comment m'y prendre sur l'autre bout de code
un peu moins indigeste...

Dernière modification par twixtop (15-01-2010 16:00:42)

Hors ligne

Pied de page des forums