Tri par ordre alphabétique

El_CaNaRdO Messages postés 4 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 19 mars 2010 - 19 mars 2010 à 11:07
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 19 mars 2010 à 17:08
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

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
19 mars 2010 à 15:02
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)
0
El_CaNaRdO Messages postés 4 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 19 mars 2010
19 mars 2010 à 15:19
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
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
19 mars 2010 à 15:43
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)
0
El_CaNaRdO Messages postés 4 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 19 mars 2010
19 mars 2010 à 16:35
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
19 mars 2010 à 17:08
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)
0
Rejoignez-nous