IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[PHP] trier un tableau dynamiquement [Sources]


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut [PHP] trier un tableau dynamiquement
    Bonjour a tous.

    J'ai un petit probleme. J'ai dans ma page html un tableau basique.
    Je souhaiterais pouvoir mettre un lien sur mes colonnes afin de trier dynamiquement les colonnes.

    Je ne souhaiterais pas passé par un webservice pour faire ceci.

    Je pense que ma solution serait d'utiliser du javascript. Mais je débute en javascript. Si vous aviez une petite idée.

    Merci beaucoup.

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Je me demande si ca serais quand meme pas plus simple pour toi de les trier en php en repostant ta page en indiquant le sens de tri ?
    Comme ça le tri se fera en sql
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    justement je voudrais que l'utilisateur puisse avoir le choix de trier sur la colonne qu'il veut.

    donc de trier directement dans la page php ne me convient pas.

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    je vois pas ou ets le probleme, sauf si tu ne prend pas tes données dans la base ...

    car sinon en cliquant sur la colonne, on recharge la page en passant le nom de la colonne et hop en sql on fais un order by sur cette colonne là
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Ce que tu me proposes comme solution me conviendrais effectivement très bien.

    Mais le probleme c'est que je sais pas comment m'y prendre en javascript.

    donc si tu avais un petit exemple pour me faire voir ca serait super sympa

    Merci en tout cas pour ton aide

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ce que je te propose c est de pas utiliser javascript justement
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    T'as le choix entre rediriger la page avec sur une url avec les paramètres de tri.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.location.href='mapage.php?col=col1&ordre=asc
    La colonne est celle que tu souhaites trier et ordre est "descendant" ou "ascendant". Tu changes la valeur selon le tri actuel de la page.

    Sinon tu fais exactement la même chose mais avec un formulaire caché (input type="hidden") et dans ton lien une fonction faisant grosso modo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.monForm.col.value = "col1";
    document.monForm.ordre.value = "asc";
    document.monForm.submit();
    C'est juste une piste faite en direct.

    Le reste est en PHP.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    désolé j'avais pas compris.
    J'ai un peu de mal.

    Donc ok en faite tu me dit de recharger ma page en passant en paramètre la colonne a trier??

    Ca ne sera pas trop long en temps de rechargement???

    Il vaut donc mieux traiter ca en php qu'a l'aide d'une fonction javascript alors??

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    très bien je vais faire comme ca.

    Merci a tous les 2 en tout cas

  10. #10
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben c est toi qui voit mais en javascript ca va etre beaucoup plus complexe car naviguer dans les colonnes d'une table est beaucoup moins facile que de naviguer dans des lignes
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    je vais jouer la carte de la prudence et tester avec ton idée.

    Merci

  12. #12
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    bon ça m'interresait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <html>
    	<head>
    		<title>Trier des colonnes</title>
    		<style type='text/css'>
    			table{
    				width: 50%;
    				text-align: center;
    			}
    		</style>
    		<script type='text/javascript'>
    			function tri_asc(a,b){
    				if(a.value > b.value)
    					return 1;
    				else if (a.value < b.value)
    					return -1;
    				else
    					return 0;
    			}
    			function tri_desc(a,b){
    				return tri_asc(a,b) * -1;
    			}
    			window.onload=function(){
    				var tb = document.getElementById('matable');
    				var ths = tb.getElementsByTagName('th');
    				window.rows = tb.getElementsByTagName('tr');
    				window.states = new Array();
    				for(var i=0;i<ths.length;i++){
    					ths[i].name = String(i);
    					window.states[i] = "desc";
    					ths[i].onclick = function(){
    						var index = parseInt(this.name,10);
    						var sortMeth = tri_asc;
    						if(window.states[index] == "desc"){
    							window.states[index] = "asc";
    						}
    						else{
    							window.states[index] = "desc";
    							sortMeth = tri_desc;
    						}
     
    						var tabToSort = new Array();
     
    						while(window.rows.length>1){
    							var val = window.rows[1].childNodes[index].firstChild.nodeValue;
    							tabToSort[tabToSort.length] = {row: window.rows[1].parentNode.removeChild(window.rows[1]),value: val};
    						}
    						tabToSort.sort(sortMeth);
    						for(var j=0;j<tabToSort.length;j++){
    							window.rows[0].parentNode.appendChild(tabToSort[j].row);
    						}
    					}
    				}
    			}
    		</script>
    	</head>
    	<body>
    	<table id="matable">
    		<tr>
    			<th>Col 1</th>
    			<th>Col 2</th>
    			<th>Col 3</th>
    		</tr>
    		<tr>
    			<td>a</td>
    			<td>b</td>
    			<td>02</td>
    		</tr>
    		<tr>
    			<td>d</td>
    			<td>c</td>
    			<td>04</td>
    		</tr>
    		<tr>
    			<td>e</td>
    			<td>f</td>
    			<td>10</td>
    		</tr>
    		<tr>
    			<td>g</td>
    			<td>a</td>
    			<td>01</td>
    		</tr>
    	</table>
    	</body>
    </html>
    par contre je fais un tri alphabétique, du coup si tu as une colonne numérique, il faut mettre des 0 devant les chiffres pour éviter par exemple que 10 se retrouve devant 2

    Quand tu click ca tri ascendant, si tu reclick ca tri descendant.

    Apres il te suffit de mettre un pointeur spécifique en css par exemple pour bien voir qu'on peut clicker sur les entete de colonne
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier un tableau dynamique
    Par hehee dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2013, 15h50
  2. Trier un tableau php dynamiquement
    Par spads dans le forum Langage
    Réponses: 42
    Dernier message: 19/06/2012, 09h35
  3. [Tableaux] Tableau dynamique avec php
    Par Ricus28 dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2006, 22h46
  4. [PHP-JS] Trier des champs dynamiques
    Par Mehdi Feki dans le forum Langage
    Réponses: 8
    Dernier message: 22/12/2005, 23h39
  5. trier tableau dynamique
    Par prodi_64 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/10/2005, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo