Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: sanddy le le 26-02-2009 a 11:47:00

Titre: Comment trier un tableau après l'avoir dédoublonné ?
Posté par: sanddy le le 26-02-2009 a 11:47:00

Bonjour,

J'ai un tableau que j'ai réussi à classer en y affichant quelque chose comme :


Code:
Fiche 1 : 3 fois
Fiche 4 : 22 fois
Fiche 7 : 2 fois
Fiche 12 : 16 fois
Fiche 22 : 10 fois


C'est le champs "page" qui me permet d'afficher le terme "Fiche x". Par contre, c'est grâce à array_count_values que je peux calculer le nombre de fois que la requete me l'a sorti.

Maintenant que ça s'affiche bien, je voudrais pouvoir classer ces fiches par le nombre de fois qu'elles apparaissent en décroissant... j'ai testé usort mais j'y arrive pas...

Je voudrais que ça devienne :

Code:
Fiche 4 : 22 fois
Fiche 12 : 16 fois
Fiche 22 : 10 fois
Fiche 1 : 3 fois
Fiche 7 : 2 fois



Voici mon code :


Code:
$quer1 = "SELECT * FROM matable WHERE (date <= '".$datf."' OR date LIKE '".$datf."%') AND (date >= '".$datd."' OR date LIKE '".$datd."%') ORDER BY page ASC ";

$resulta1 = mysql_query($quer1) or die(mysql_error());

while ($do = mysql_fetch_assoc($resulta1)) {
   $tab[] = $do['page'];
}

$a=array_count_values($tab);
//$tab = array_unique ($tab);
//rsort($tab, SORT_REGULAR);
//print_r($a);

foreach ($a as $t => $nb) {
   echo $t." : ".$nb." fois<br />";
}


Quelle fonction puis-je utiliser pour trier ce tableau qui a déjà été dédoublonné et que ça m'affiche "Fiche x : xxx fois" ?

Merci d'avance.

Puis ensuite, j'aimerai aussi le limiter aux 10 premiers affichages, est-ce possible svp ?

Titre: Re:Comment trier un tableau après l'avoir dédoublonné ?
Posté par: sanddy le le 26-02-2009 a 14:09:22

Je voulais me faire à l'idée d'essayer de faire avec les tableaux pour mieux m'y connaître mais c'était galère et c'est vrai qu'en faisant simplement une requête sql, ça m'a permis de réussir à faire ce que je voulais...



Code:
$quer1 = "SELECT COUNT(*) AS nb, page FROM matable WHERE (date <= '".$datf."' OR date LIKE '".$datf."%') AND (date >= '".$datd."' OR date LIKE '".$datd."%') GROUP BY page ORDER BY nb DESC LIMIT 10";

$resulta1 = mysql_query($quer1) or die(mysql_error());


Bref, bonne journée ;) ++++


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.