mettre les images de mon script par ordre alphabetique


spidermas
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 10 Jan 2005

mettre les images de mon script par ordre alphabetique

Message le Lun Oct 13, 2008 10:08

bonjour a tous

Le but de se script est d'afficher une image aleatoire pour chaque dossier contenue sur le serveur

se bout de code appartient à une galerie que je suis en train de faire.

Le probleme etant que je n'arrive pas a placer mon natsort afin que les dossiers representés par une image aleatoire soit mis par ordre alphabetique

merci d'assayer de m'aider a regler se probleme

Code: Tout sélectionner

<?


$adresse="./";
$dossier= opendir($adresse);

while ($Fichier = readdir($dossier))
{

     if ($Fichier != "." && $Fichier != ".." && $Fichier != "templates" && $Fichier != "images" && $Fichier != "_images" && $Fichier != "commentaires" && $Fichier != "votes" && $Fichier != "basic" && $Fichier != "test" && is_dir($Fichier)) // Filtre anti-point !
     {
     $ordre[] = $Fichier;   
   
                             
                                                                                       
$imgpath = "$Fichier/miniatures/"; // chemins des images
$textalter = "$Fichier"; // texte alternatif de l'image (attribut alt)
$urlplop = "$Fichier.html";




$max_caracteres=14;
$textalter2 = "$textalter";
// Test si la longueur du texte dépasse la limite
if (strlen($textalter2)>$max_caracteres)
{   
// Séléction du maximum de caractères
$textalter2 = substr($textalter2, 0, $max_caracteres);
   
     
// Ajout des "..."
$textalter2 = $textalter2."...";
}


                                                                               
                                                                                                                                                 
                                                                                       
$nodir = 0;
if ($imgpath == ".." || $imgpath == "." || $imgpath == "")
{
        $nodir = 1;
        $imgpath = ".";
}
                                                                               
                                                                                       
$j = strlen($imgpath);
$j--;
if ($imgpath[$j] != '/' && $imgpath != ".")
        $imgpath .= '/';
                                                                               
                                                                                       
if (is_dir($imgpath))
{
                                                                               
                                                                                       
        if ($condir = opendir($imgpath))
        {
                $i = 0;
                while (($curfile = readdir($condir)) != false)
                {
                        $extension = "";
                        $extension = preg_replace("/.+\.(.{3,4})/", "$1", $curfile);
                        if ($extension == "png" || $extension == "gif" || $extension == "bmp" || $extension == "jpeg" || $extension == "jpg")
                        {
                                $i++;
                                $images{$i} = $curfile;
                        }
                }
       natsort ($ordre);                                                                         
                                                                                       
                if ($images{1} == "")
                {
                        echo "Aucunes images dans le dossier !";
                }
                else
                {
                   
                  $i = rand(1, $i);
                       $image = $images{$i};
         

             {
         

                        echo "
               
                  <div class=\"float\"><a href=\"".$urlplop."\"><img src=\"";
                        if ($nodir != 1)
                                echo $imgpath;
                        echo "".$image."\" alt=\"".$textalter."\" width=106 height=80 border=0 />
                  <p>".ucfirst($textalter2)."</p><a/></div>";
                  
                }
            }
        }
        else
        {
                echo "
            <a href=\"".$urlplop."\"><img src=\"http://www.wallpapers-fond-ecran.info/blanc.jpg\" alt=\"galerie\" width=\"106\" height=\"80\" border=\"0\" /></a>
            
            ";
        }
}
else
{
        echo "<div class=\"float\">
      <a href=\"".$urlplop."\"><img src=\"http://www.wallpapers-fond-ecran.info/blanc.jpg\" alt=\"galerie\" width=\"106\" height=\"80\" border=\"0\" /><p>".$textalter2."</p><a/></div>
      ";
}

     }
}
closedir($dossier);
         
         
          ?>




spidermas
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 10 Jan 2005

Message le Mer Oct 15, 2008 11:07

up


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Message le Mer Oct 15, 2008 15:23

tu dois mettre le resultat dans un tableau et ensuite lister le tableau

print_r("$ListFiles");

Code: Tout sélectionner
// tri par ordre decroissant
  $list_tri = 'DESC';
  if(count($ListFiles)!=0)   {
     if($list_tri == 'DESC')   {
         rsort($ListFiles);
     }
     else   {
         sort($ListFiles);
     }
  }


spidermas
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 10 Jan 2005

Message le Mer Oct 22, 2008 9:53

j'ai essayer de modif avec array mais sa affiche en boucle le meme repertoire

par exemple si j'ai 5 repertoires a b c d e

a l'affichage j'ai 5 fois le repertoire e :(

voila le nouveau code si quelqu'un peut m'aider je suis preneur

Code: Tout sélectionner

<?

$plopabc = array();
$adresse="./";
$dossier= opendir($adresse);
$list_tri = 'DESC';
while ($Fichier = readdir($dossier))
{

     if ($Fichier != "." && $Fichier != ".." && $Fichier != "templates" && $Fichier != "images" && $Fichier != "_images" && $Fichier != "commentaires" && $Fichier != "votes" && $Fichier != "basic" && $Fichier != "test" && is_dir($Fichier)) // Filtre anti-point !
     {
   
    $plopabc[] = $Fichier;   
   
natsort($plopabc);
foreach($plopabc as $vac)   
                                                                          
$imgpath = "$vac/miniatures/"; // chemins des images
$textalter = "$vac"; // texte alternatif de l'image (attribut alt)
$urlplop = "$vac.html";



$max_caracteres=14;
$textalter2 = "$textalter";
// Test si la longueur du texte dépasse la limite
if (strlen($textalter2)>$max_caracteres)
{   
// Séléction du maximum de caractères
$textalter2 = substr($textalter2, 0, $max_caracteres);
   
     
// Ajout des "..."
$textalter2 = $textalter2."...";
}
                                                                           
                                                                                       
/*
+--------------+
| Programme |
+--------------+
*/
                                                                               
                                                                                       
$nodir = 0;
if ($imgpath == ".." || $imgpath == "." || $imgpath == "")
{
        $nodir = 1;
        $imgpath = ".";
}
                                                                               
                                                                                       
$j = strlen($imgpath);
$j--;
if ($imgpath[$j] != '/' && $imgpath != ".")
        $imgpath .= '/';
                                                                               
                                                                                       
if (is_dir($imgpath))
{
                                                                               
                                                                                       
        if ($condir = opendir($imgpath))
        {
                $i = 0;
                while (($curfile = readdir($condir)) != false)
                {
                        $extension = "";
                        $extension = preg_replace("/.+\.(.{3,4})/", "$1", $curfile);
                        if ($extension == "png" || $extension == "gif" || $extension == "bmp" || $extension == "jpeg" || $extension == "jpg")
                        {
                                $i++;
                                $images{$i} = $curfile;
                        }
                }
                                                                               
                                                                                       
                if ($images{1} == "")
                {
                        echo "Aucunes images dans le dossier !";
                }
                else
                {
                   
                  $i = rand(1, $i);
                       $image = $images{$i};
         

             {



                        echo "
               
                  <div class=\"float\"><a href=\"".$urlplop."\"><img src=\"";
                        if ($nodir != 1)
                                echo $imgpath;
                        echo "".$image."\" alt=\"".$textalter."\" width=106 height=80 border=0 />
                  <p>".ucfirst($textalter2)."</p><a/></div>";
                  
                }
            }
        }
        else
        {
                echo "
            <a href=\"".$urlplop."\"><img src=\"http://www.wallpapers-fond-ecran.info/blanc.jpg\" alt=\"galerie\" width=\"106\" height=\"80\" border=\"0\" /></a>
            
            ";
        }
}
else
{
        echo "<div class=\"float\">
      <a href=\"".$urlplop."\"><img src=\"http://www.wallpapers-fond-ecran.info/blanc.jpg\" alt=\"galerie\" width=\"106\" height=\"80\" border=\"0\" /><p>".$textalter2."</p><a/></div>
      ";
}

     }
}
closedir($dossier);

?>



KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Message le Mer Oct 22, 2008 12:48

stocke proprement le resultat de ton code dans un tableau.
au lieu de faire des sorties écran (echo) tu stockes:
$tableau[] = $images{$i};
tu test -> print_r()
car c'est à partir de ce tableau que tu pourras reconstruire ta sortie écran. Les fonctions sur les tableaux sont multiples.


spidermas
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 10 Jan 2005

Message le Jeu Oct 23, 2008 9:26

ok je vais voir se que je peut faire avec un tableau mais le probleme se situe au niveau de l'affichage des repertoires qui sont representés par une image

en effet, si il y a 5 dossiers nommés a b c d e, seul le premier sera affiché 5 fois

en gros je me retrouve avc 5 fois le dossier a au lieu d'un de chaque


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Jeu Oct 23, 2008 9:46

pourquoi tu ne fais pas un glob() ?


spidermas
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 10 Jan 2005

Message le Jeu Oct 23, 2008 10:06

à quel niveau et dans quel interet ?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Message le Jeu Oct 23, 2008 10:11

spidermas a écrit:à quel niveau et dans quel interet ?


Pour récupérer la liste de tes images de manière plus simple :-) : http://fr.php.net/glob


spidermas
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 10 Jan 2005

Message le Jeu Oct 23, 2008 10:16

c'est la liste des repertoires que je cherche a ranger par ordre alphabetique

quoiqu'il en soit la j'avance un peu j'ai juste un leger probleme imcomprehesible


j'explique :

$Fichier etant la liste des repertoires

ce bout de code affiche a a a a a
Code: Tout sélectionner
$rien[] = $Fichier;
natsort($rien);
foreach ($rien as $rien2);
print("$rien2");



ce bout de code affiche a b c d e dans le desordre
Code: Tout sélectionner
$rien[] = $Fichier;
foreach ($rien as $rien2);
print("$rien2");



question : pourquoi le natsort ne fonctionne t-il pas ? :(


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Message le Jeu Oct 23, 2008 12:10

sort() devrait suffir pour un simple trie par ordre alphabétique


spidermas
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 10 Jan 2005

Message le Ven Oct 24, 2008 6:17

sort() marche pas non plus :(

je vais devenir fou avec se bout de code

il ny a pourtant pas de probleme de syntaxe c'est etrange


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité