Tableau PHP : trier en fonction des valeurs

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


Bahanix
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 131
Inscription: Mar Juin 07, 2005 23:58

Tableau PHP : trier en fonction des valeurs

Message le Dim Mar 05, 2006 21:28

Code: Tout sélectionner
$liste=array();
$sql="SELECT `postal` FROM `membres` WHERE `postal`!=''";
$res = queryDB($sql);
while($row = mysql_fetch_array($res)){
   $postal=$row['postal'];
   if(strlen($postal)==4)$postal='0'.$postal;
   $code=substr($postal,0,2);
   $liste[$code]++;
}


Alors j'ai un petit soucis pour faire ceci :
Je voudrais afficher les x départements qui possèdent le plus de membres.
Il faut donc trier le tableau $liste par ordre décroissant en fonction des valeurs et non des clés, puis afficher la clé associée pour chaque valeur.

Voici un exemple de ce que je voudrais obtenir :
Code: Tout sélectionner
75 : 25
92 : 18
34 : 3


(dans ce cas, x vaudrais 3).
Mais voila, je n'y arrive pas -_-#

Quelqu'un aurait il la solution ^^ ?

Takumi
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 118
Inscription: Mer Jan 04, 2006 13:36

Message le Dim Mar 05, 2006 22:08

Je pense qu'il est beaucoup plus simple et efficace de faire tout ce traitement dans la requête sql, sauf si tu as vraiment besoin dans cette page de la liste complète des codes postaux pour chaque membre.

Donc à ta place je commencerais par faire un script qui met au propre dans ta base sql tout les codes postaux sur 5 chiffres ^^

Et ensuite utiliser une requête avec un GROUP BY SUBSTR sur les 2 premiers caractères du code postal :
Code: Tout sélectionner
SELECT SUBSTR(postal,0,2) as departement,count(id) as total FROM membres WHERE postal!='' GROUP BY departement ORDER BY total DESC LIMIT 0,3


:)


Bahanix
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 131
Inscription: Mar Juin 07, 2005 23:58

Message le Dim Mar 05, 2006 22:31

La requete renvois une erreur, j'ai remplacé "substr" par "substring", pas d'erreur, mais ne renvois pas ce qu'il faut :/ (juste une ligne avec departement vide et total valant le nombre de membres où total!='')

On notera qu'en retirant le substr[ing], les résultats sont corrects, mais il présente les 5 chiffres code postal :/

Edit : Problème résolut, une étrangeté de la nature fait que le 1er caractère d'une chaine traitée par substring a pour index "1" et non "0".

Exemple : 75000

Pour extraire le 75, il faut
subtring(monchamps,1,2);

et non le "0" dont on est habitué pour le PHP.

Merci pour ton aide Takumi ;)

Takumi
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 118
Inscription: Mer Jan 04, 2006 13:36

Message le Lun Mar 06, 2006 0:57

Oups oui désolé c'est 1 et non pas 0 en effet ^^


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités