L'éditeur JavaScript
Visiteur non-identifié | Identifiez-vous | Devenir membre
Code perdu ? | Combien de visiteurs sur votre site ?
Rechercher :
Page d'accueil
     Home Page

JavaScript
     Tous les scripts
     Proposer un script
     Recherche de script
     AJAX new!
     Cours de JavaScript
     Liste de discussion
     Forums

Services :
     CountUs
     myCircle

     Referencement
     Créat. de bannière

Trucs et astuces :
     HTML / CSS
     PHP / MySQL
     Réferencement
     Graph / Présentation
     Toutes les astuces
     Ajouter un article

MailingList :
100235 abonnés

Annuaire webmaster :      Hebergement web
     Referencement
     Sites webmasters
     XHTML - CSS2
     PHP
     Affiliation - Pub
     FAI

     Annuaire webmaster

Ressources pour webmasters :
     Kits graphiques

Plus :
     Comparateur de prix
     Foire aux questions
     Les membres
     Devenir annonceur
     Faire un lien
     Contact

Partenaire :
     Hebergement gratuit
     Le PHP facile
     Horoscope
     Comscripts
     WebmasterClub
     Activeartanima...
     Le village de ...
     L'écriteau
     Faro-dessing
     Images gifs an...
     Netsources
     Easy-script.com
     Création de site
     Créer son site...
     K i s s design
     Les autres
     Votre site ici ?


Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]


[ Forums >> JavaScript >> Problèmes de création JavaScript / DHTML >> Trier un tableau avec une règle de tri ]

> Trier un tableau avec une règle de tri
[ Posté par Extraterrestre ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 07-05-2008 à 22:21 | 30 messages ]

Salut à tous,
je voudrais savoir comment faire pour trier un tableau sur une colonne spécifique.
Je sait qu'il existe la fonction sort() et que en paramètre on peut mettre une fonction de tri. Mais je n'arrive vraiment pas à comprendre comment fonctionne cette règle de tri.
Concrètement, j'ai cré un tableau (avec la fonction array) qui s'appelle "Film", puis un autre qui s'appelle "Genre". Et enfin, dans un 3ème tableau (nommé "Tableau") j'ai mis les 2 tableaux précédents pour former un tableau à 2 colonnes. Et donc, je voudrais trier mon tableau "Tableau" par rapport à la colonne "Film".
Pouvez-vous m'aider s'il vous plait. Merci d'avance



[ Posté par #:-{)% ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 08-05-2008 à 03:25 | 2325 messages ]

Alut

houla, c'est 1 peu complexe, j'ai retrouvé ceci ds mes archives :
<html>
<head>
<title>Tri de table javascript</title>
<script language="javascript">
function reclasse(ordre)
{
personne = cree_tableau();
personne = tri_tableau(personne, ordre);
ecrit_tableau(personne);
}

function cree_tableau()
{
var personne = new Array;
elem = document.getElementById("liste");
ligne = elem.getElementsByTagName("TR");
for (var i = 0 ; i < ligne.length ; i++)
{
colonne = ligne.item(i).getElementsByTagName("TD");

nom = colonne.item(0).firstChild.nodeValue;
prenom = colonne.item(1).firstChild.nodeValue;
cp = colonne.item(2).firstChild.nodeValue;
ville = colonne.item(3).firstChild.nodeValue;
personne[i] = new liste(nom, prenom, cp, ville);
}
return personne;
}

function tri_tableau(personne, ordre)
{
for (var i = 0 ; i < personne.length ; i++)
{
for( var j = i+1 ; j < personne.length ; j++)
{
switch (ordre)
{
case "nom":
premier = personne[i].nom;
suivant = personne[j].nom;
break;

case "prenom":
premier = personne[i].prenom;
suivant = personne[j].prenom;
break;

case "cp":
premier = personne[i].cp;
suivant = personne[j].cp;
break;

case "ville":
premier = personne[i].ville;
suivant = personne[j].ville;
break;
}

if (premier > suivant)
{
tmp = personne[i];
personne[i] = personne[j];
personne[j] = tmp;
}
}
}
return personne;
}

function ecrit_tableau(personne)
{
elem = document.getElementById("liste");
ligne = elem.getElementsByTagName("TR");
for (var i = 0 ; i < ligne.length ; i++)
{
colonne = ligne.item(i).getElementsByTagName("TD");

colonne.item(0).firstChild.nodeValue = personne[i].nom;
colonne.item(1).firstChild.nodeValue = personne[i].prenom;
colonne.item(2).firstChild.nodeValue = personne[i].cp;
colonne.item(3).firstChild.nodeValue = personne[i].ville;
}
}

function liste(nom, prenom, cp, ville ,naissance)
{
this.nom = nom;
this.prenom = prenom;
this.cp = cp;
this.ville = ville;
this.naissance = naissance;

return(this);
}
</script>
</head>
<body>
<h3 align="center">Cliquez sur le titre de colonne pour trier</h3>
<table align="center" width="75%" border="1">
<thead>
<tr>
<th><a href="javascript:onclick=reclasse('nom')">Nom</a></th>
<th><a href="javascript:onclick=reclasse('prenom')">Prénom</a></th>
<th><a href="javascript:onclick=reclasse('cp')">Code Postal</a></th>
<th><a href="javascript:onclick=reclasse('ville')">Ville</a></th>
</tr>
</thead>
<tbody id="liste">
<tr>
<td>dupont</td>
<td>jules</td>
<!-- j<a href="html/mapage.htm">ules</a> -->
<td align="center">75012</td>
<td>paris</td>
</tr>
<tr>
<td>macheprot</td>
<td>bernard</td>
<td align="center">78000</td>
<td>mantes</td>
</tr>
<tr>
<td>heinz</td>
<td>franz</td>
<td align="center">68000</td>
<td>colmar</td>
</tr>
<tr>
<td>zorglub</td>
<td>andré</td>
<td align="center">76000</td>
<td>rouen</td>
</tr>
<tr>
<td>buzard</td>
<td>henri</td>
<td align="center">14000</td>
<td>caen</td>
</tr>
</tbody>
</table>
</body>
</html>

Atchao

________________
Oubli du BBcode, rééditer!
barbe-sauvage ex Mozopiens devenu renard de feu... et un peu konq sur les bords

Les OG et les DR, je M pas :/

[ Posté par Extraterrestre ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 08-05-2008 à 19:30 | 30 messages ]

Merci de ta réponse. En effet cette solution semble plutot compliqué, mais bon ça pourra toujours me servir ...
Il n'y a pas moyen de de mettre une regle (qui est en fait une fonction) en paramètre de la méthode sort() ??
J'ai vu plusieurs exemples sur Internet mais je ne comprend pas très bien ...
J'ai vu que quand on renvoie la valeur -1 ça inverse l'odre. Mais le problème dans mon cas c'est que ça m'inverse l'ordre des colonnes, alors qu'il faudrait que ça inverse l'ordre des lignes ...
Si quelqu'un peut m'aider ... Merci d'avance

[ Posté par Extraterrestre ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 09-05-2008 à 11:44 | 30 messages ]

Bon en fait c'est bon, je me suis débrouillé avec le code que tu m'as donné, je l'ai adapté pour mon cas.
Merci de ton aide
tchao




Services email :

Vous devez vous identifier pour profiter des services par email du forum.
Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]






20 visiteurs
actuellement en ligne

    PUBLICITE



     ANNUAIRE WEBMAST.
Hewlett Packard
Espace HP pour les particuliers et petites entreprises.
http://h41257.www4.hp.com...
Cat : Hardware
Voir l'annuaire webmaster


     LES SCRIPTS :
78 à éditer
68 à copier/coller
247 des membres
2580 sur le web
>> Tous les scripts

     LES MEMBRES :
54281 membres
9518 comptes CountUs
1406 comptes myCircle

     LES FORUMS :
14 forums
39052 topics
188233 messages
>> Les forums

    SONDAGE

Utilisez-vous une page d'accueil personnalisable ?
Oui, la page d'accueil de Google (pas le moteur)
Oui, netvibes
Oui, mon Yahoo
Oui, my MSN
Oui, un autre
Non, je n'utilise pas de service de page d'accueil personnalisée
La mini-astuce "PHP / mySQL" du jour par Ultiny
En PHP, pour résoudre des problèmes de developpement, vous avez la possibilitée d'afficher le contenu d'une variable quelque soit son type (array, string, integer, boolean...) de cette mannière :

var_dump($variable); ou encore print_r($variable);
Proposer votre mini-astuce | Archives des mini-astuces
© 1999-2008 K-NETWORK - Tous droits réservés | CNIL N° 844440 | 06/07/2008 01:53:42 | Design by Studcrea | Gen. en 0.449 sec.