Trier données PHP

Signaler
Messages postés
72
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
31 octobre 2011
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour, j'ai recherché sur le forum et sur le Net comment trier des données PHP (qui sont ensuite envoyées à Flash), et j'ai pas trouvé mon bonheur (il y avait à chaque fois une base de donnée derrière).

Voici mon code :

<?
$count =0;
$dir=opendir("ecouter" )or die("erreur ouverture du dossier" );
 
while ($file = readdir($dir))
{
 if($file != '..' && $file !='.' && $file !='')
               { 
  if(!is_dir($file))
  {
  $count ++;
  $nomTitre = basename ($file,".mp3");
  $titre[$count] = $nomTitre; 
  echo utf8_encode("&name_file".$count."=".$titre[$count]);
                                 }
                 }
 }
echo "&count_file=".$count;
closedir($dir);
?>

J'ai essayé avec natcasesort mais je sais pas ou le mettre (ni comment l'uliser en fait !)
Merci pour votre aide.

5 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

<?
$count = 0;
$dir=opendir("ecouter" )or die("erreur ouverture du dossier" );
 
while ($file = readdir($dir))
{
 if($file != '..' && $file !='.' && $file !='')
               { 
  if(!is_dir($file))
  {
  $count ++;
  $nomTitre = basename ($file,".mp3");
  $titre[$count] = $nomTitre; 
  echo utf8_encode("&name_file".$count."=".$titre[$count]);
                                 }
                 }
 }
natcasesort($ titre );
print_r($titre);
echo "&count_file =".$count;
closedir($dir);
?>
Messages postés
72
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
31 octobre 2011

Merci pour ton aide. Voici ce que cela donnait avant :

&name_file1=haiduci&name_file2=access&name_file3=xylophone&name_file4=clown&name_file5=cartoon&count_file=5


Et avec ton code :

&name_file1=haiduci&name_file2=access&name_file3=xylophone&name_file4=clown&name_file5=cartoonArray ( [2] => access [5] => cartoon [4] => clown [1] => haiduci [3] => xylophone ) &count_file=5


Le problème est le suivant : comment je peux récupérer ces données avec Flash ?
Il faudrait remplacer les [1] [2] et les => => par mes variables &name_file1= &name_file2= etc...


Merci de ton aide précieuse !
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Non c'est impossible que ce soit cet ordre. Le truc c'est que tu envoies tes données dans le while(), c'est ça ?
Passes plutôt par glob(), puis trie, puis affiches tes données pour Flash.
Messages postés
72
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
31 octobre 2011

Merci pour ton aide, avec glob j'ai des erreurs. Par contre j'ai trouvé une source que j'ai modifié et ça marche maintenant. Ca donne ça :

<?
// ouvre le rep
$count =0;
$dossier = opendir("ecouter");
$i=0;
while ( $file = readdir($dossier) )
{
// enleve les fichiers . et ..
if ($file != '.' && $file != '..')
{
// on passe les datas dans un tableau
$ListFiles[$i]=$file;
$i++;
}
}
closedir($dossier);
// tri par ordre decroissant
if(count($ListFiles)!=0)
{
if($list_tri == 'DESC')
{
rsort($ListFiles);
}
else
{
sort($ListFiles);
}
}
// affiche les fichiers par ordre alphabetique decroissant
$i=0;
while ( $i < count($ListFiles))
{
//echo $ListFiles[$i];
$ii = $i+1;
$nomTitre = basename ($ListFiles[$i],".mp3");
$titre[$i] = $nomTitre;
echo utf8_encode("&name_file".$ii."=".$titre[$i]);
$i++;
}
echo "&count_file=".count($ListFiles);
?>

Maintenant il faut que je rajoute un filtre pour qu'il ne m'affiche pas les dossiers. Parce que là il m'affiche tous les fichiers ET les sous-dossiers se trouvant dans mon dossier "ecouter".
Si tu as une idée je suis preneur.
Merci.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
salut
  if($list_tri == 'DESC')

c'est defini ou ca ?

pour filtrer fichiers et dossiers utilise is_dir ou is_file (je ne suis pas sur qu'il y ai des _)

malalam, son echo restait dans la boucle donc si ca restait dans cet ordre.

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/