Tableau PHP : trier en fonction des valeurs
4 messages
• Page 1 sur 1
-

Bahanix - WRInaute discret

- Messages: 131
- Inscription: 7 Juin 2005
Tableau PHP : trier en fonction des valeurs
- 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 discret

- Messages: 118
- Inscription: 4 Jan 2006
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 :

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 discret

- Messages: 131
- Inscription: 7 Juin 2005
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
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
4 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- [résolu] PHP-Trier un tableau en fonction d'un critére perso
- Trier un tableau en PHP
- PHP-Trier un tableau
- Comment trier en php un tableau multidimensionnel ?
- Trier un tableau par rapport à un autre
- trier les éléments d'un tableau
- [JAVASCRIPT] edition de valeurs dans un tableau grâce à AJAX
- PHP: Mélanger un tableau de tableau de manière aléatoire
- trier les backlinks d'un site en fonction d'un mot clé
- [PHP] trier 2 tableaux
Consultez la description détaillée des produits ou services de Google suivants : Google Flights
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
