Tri par ordre alphabétique

Signaler
Messages postés
4
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
19 mars 2010
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

Mon frère m'a aidé dernièrement à développer un petit JS pour faire des miracles.

En résumé, j'ai un site qui recense des adresses. J'ai associé à chaque adresse, un ID. Quand je clique sur un bouton, il check les ID, et affiche les adresses, actuellement par ordre alphabétique, parce que c'est de cette facon que je les ai entrés.

Probleme : quand j'ajoute une nouvelle adresse, je lui affecte évidemment le dernier ID+1. Et quand je clique sur mon bouton, la toute dernière adresse apparait logiquement en bas de la liste, et non triée alphabétiquement dans ma liste actuelle.

Donc, j'ai possibilité, quand j'ajoute une adresse, de l'ajouter "au bon endroit dans ma liste", cependant, ca m'oblige à décaler tous les ID suivants, ce qui n'est pas forcément pratique..

Dans mes adresse, j'ai un champ "localité". C'est ce champ qui est trié alphabétiquement. Est ce que, dans ce cas, je n'ai pas moyen, dans ma fonction, de faire un double tri :

Dans un premier temps, il fait la liste de tous les ID, et dans un second temps, il trie les ID en fonction de la localité ? Je n'ai aucune idée de comment faire ca..

Voici mon code actuel:

function ListerUsinesAffichees()
{
        var coordonnees_generales = '';
        for(var i = 0; i < 40; i++)
        {
                //alert('i = ' +i);
                // tester la présence de l'ID correspondant
                var object = opener.document.getElementById('u_'+i);
                if (object)
                {
      // cette usine est existante. On regarde si elle est masquée ou non
                if (object.style.display != 'none')
                {
                        // cette usine est affich
                        // alert('Usine ID = u_'+i+' est affichée');
                        coordonnees_generales += AfficherCoordonnees(i, '0');
                };
    };
        }
        document.getElementById('coordonnees_contact').innerHTML = coordonnees_generales;
}


Merci de votre aide !

Thib.

5 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
plusieurs questions se posent à la lecture de ton post entre autres...
- comment son structurées tes données
- pourquoi affecter une ID

et réponse est donnée OUI on peut trier suivant plusieurs clés.

;O)
Messages postés
4
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
19 mars 2010

mmh, comment sont structurées mes données, qu'est ce que tu entends par là ?

les données de mes adresses sont renseignées dans un fichier parallèle, dans lequel sont définis différentes lignes, où je renseigne mes informations (localité, adresse, contact, toussa).

Pourquoi affecter une ID, parce que mon site permet tout un tas de choses, entre autres, selon une sélection préalable, d'afficher seulement certaines des adresses.

Maintenant, comment trier selon différentes clés ?


ZiroKewL
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Les données structurées sont un ensemble d'informations communes et groupées afin de pouvoir faire du traitement sur celle ci.
exemple simple:
var Tab = new Array();
var i = 0;
Tab[i++] = { nom : "DUPONT", prenom : "Michel", ville : "Toulouse"};
Tab[i++] = { nom : "CAMUS",  prenom : "Albert", ville : "Lyon"};
...etc...

...elles présentent des mêmes champs, renseignés ou non, à l'instar d'une base de données classique.

Dans l'exemple ci dessus elles sont mises en tableaux afin de pour y accéder facilement.

Pour trier suivant différentes clés il suffit de commencer le tri par la dernière clé et ainsi de suite en remontant jusqu'à la première.

;O)
Messages postés
4
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
19 mars 2010

j'ai effectivement un code similaire, concernant mes données :

         * tab_usines[id_usine]['localite'] = "truc";
         * tab_usines[id_usine]['produits'] = "1,2,5,9";
         * tab_usines[id_usine]['adresse1'] = "place truc"; //peut etre vide
         * tab_usines[id_usine]['adresse2'] = ""; // peut etre vide
         * tab_usines[id_usine]['codepostal'] = "12345";
         * tab_usines[id_usine]['ville'] = "Bidule";
         * tab_usines[id_usine]['fax'] = "+33 ....";
         * tab_usines[id_usine]['tel'] = "+33 ....";
         * tab_usines[id_usine]['email'] = "truc@.tld"; // peut etre vide



Comment maintenant, faire le tri en partant de la dernière clé ?

ZiroKewL
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
tu utilises la méthode sort des Array en créant les fonctions de comparaison suivant tes besoins
exemple
//-- Tri par ville
tab_usines.sort( Fct_Tri_Ville);
//-- Tri par localite
tab_usines.sort( Fct_Tri_Localite);

en sortie tu auras les données triées par localité et par ville, il va de soit que les fonctions sont à définir suivant le besoin

;O)