Tri naturel inverse sur script images avec pagination [Résolu]

Signaler
Messages postés
21
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
18 décembre 2013
-
cs_AuGuy
Messages postés
21
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
18 décembre 2013
-
bonjour  ça fait 2 jour que je me casse la tete sur ça un coup de main serait le bienvenue donc merci d'avance pour l'aide
 donc voila le script en question
<?php


$nbr_colonne = 1;
$nbr_ligne = 10;


$RepPetiteImages = "images/";
$RepGrosseImages = "images/";




function GetFileList( $dirname="." ) {   
   $files = array(); 
   $dir = opendir( $dirname );
   while( $file = readdir( $dir ) ) {
      if (ereg("jpg$",$file) || ereg("JPG$",$file) || 
          ereg("jpeg$",$file) || ereg("JPEG$",$file) ||
          ereg("png$",$file) || ereg("PNG$",$file) ||
   ereg("gif$",$file) || ereg("GIF$",$file)
   ) {
          $files[] = $file; 
      }
   }
   usort($files, "strnatcmp");
   //sort($files);
   return $files;
}


echo "\n\";

$imagelist = GetFileList($RepGrosseImages);

$nbr_par_page = $nbr_colonne * $nbr_ligne;
$nbr_tot  = count($imagelist);
$debut   = 1;
$j       = 1;
$fin   = $nbr_par_page;

if (!isset($ppage))
{
 $ppage=1;
}

for($i=$debut; $i < $nbr_tot +1; $i++)
{
 $image  = $imagelist[$i-1];
 
  $size   = getimagesize(\"$RepPetiteImages$image\");
 $width  = $size[0];
 $height  = $size[1];
 
 $page  = ceil($i/$nbr_par_page);
 $tpage[$i] = $page;

 if ($page == $ppage)
 {
    if ($j == 1) echo \"----
\n\";
    echo \" \n";
  echo "  $RepGrosseImages$image \n";
  echo "   \n";
  echo "   \n";
  echo "   \n";
  echo ",  \n\";
  if ($j == $nbr_colonne)
  {
    echo \" \n\";
   $j = 1;
  }
  else
  {
   $j = $j + 1;
  }
 }
}

echo "
 \n";
echo "
 \n";
echo "
 \n";
$sval = -1;
while (list ($key, $val) = each ($tpage)) {


 if ($sval != $val)
 {
 if ($val == $ppage)
    echo "[$val] ";
  else
    echo "[$val] ";
 $sval = $val;
 }
}
echo "\n
";


?>

je le poste exactement comme je les trouvé
il fonctionne trés mais je n'arrive pas a faire un tri " naturel inverse"
j'ai cherché un peu partout deja et essayé un peu tout aussi..
comme sur la doc // Voir aussi arsort(), asort(), ksort(), krsort(), natsort(), natcasesort(), rsort(), usort(), uksort().
mais j'obtiens un peu tout et n'importe quoi (imprevisible qu'il disait je confirme!)
la seule façon qui se raproche le plus de ce que je veux est : usort($files, "strnatcmp");
la le tri est bien naturel (et dans le vrai ordre) mais pas inverse
je veux obtenir exemple  25,24,23.... 3,2,1
si quelqu'un pouvait m'aider merci beaucoup

4 réponses

Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
6
le fonction array_reverse() inverse les entr ée d'un array,

je viens de sortir de d'adapter la ligne concernée de ton code:
usort($files, "strnatcmp");
//sort($files);
return array_reverse ($files);
<hr size ="2" width="100%" />
Ma faute d'ésolé, avais zappé comment on utilise usort() ^^

j'espère que ça marche :)

Developpement Web Yannic GraphiX | Mon CMS yArt et ça démo
---> Google est ton meilleur ami! <---
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
6
array_reverse devrait être ton ami ^^

donc $naturel_invers = array_reverse(usort($files, "strnatcmp")); devrait le faire :)

@pluche

Developpement Web Yannic GraphiX | Mon CMS yArt et ça démo
---> Google est ton meilleur ami! <---
Messages postés
21
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
18 décembre 2013

c'est a dire ? j'ai pas tout compris
j'ai deja un array si j'en ajoute un j'ai un warning
je sais pas trop quoi en faire a vrai dire du
$naturel_invers = array_reverse(usort($files, "strnatcmp"));
Messages postés
21
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
18 décembre 2013

roh le nul que je suis pourquoi j'y est pas pensé
ça fonctionne parfaitement merci beaucoup  j'avais lu un truc sur array_reverse deja mais je savais pas quoi en faire vu qu'il y en avait deja un ben maintenant je sais merci merci