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 :

[AJAX] Grouper (ou non) un tableau de données


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Par défaut [AJAX] Grouper (ou non) un tableau de données
    Salut !

    Alors voilà je demande un peu d'aide, je souhaite trier des données avec ajax.
    Imaginons mon tableau de données (mysql) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Quantité | Description | Prix fruit1 | Prix fruit2 | Prix total |
    ----------------------------------------------------------------
           2 |  fruit1     |           5 |           5 |         10 |
           2 |  fruit2     |           2 |           2 |          4 |
           5 |  fruit1     |           9 |           9 |         45 |
           5 |  fruit2     |           4 |           4 |         20 |
           1 |  fruit1     |           4 |           4 |          4 |
           1 |  fruit2     |           3 |           3 |          3 |
           3 |  fruit1     |           7 |           7 |         21 |
           3 |  fruit2     |           5 |           5 |         15 |
    ----------------------------------------------------------------
    Les entrées sont toujours alternées "fruit1, fruit2, fruit1, fruit2 etc..."
    Je voudrais donc afficher mon tableau de 2 manières différentes
    Par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Quantité | Description | Prix fruit1 | Prix fruit2 | Prix total |
    ----------------------------------------------------------------
           2 |  fruit      |           5 |           - |         10 |
           2 |  fruit      |           - |           2 |          4 |
           5 |  fruit      |           9 |           - |         45 |
           5 |  fruit      |           - |           4 |         20 |
           1 |  fruit      |           4 |           - |          4 |
           1 |  fruit      |           - |           3 |          3 |
           3 |  fruit      |           7 |           - |         21 |
           3 |  fruit      |           - |           5 |         15 |
    ----------------------------------------------------------------
    Et si l'utilisateur coche le checkbox "Grouper" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Quantité | Description | Prix fruit1 | Prix fruit2 | Prix total |
    ----------------------------------------------------------------
           2 |  fruit      |           5 |           2 |         14 |
           5 |  fruit      |           9 |           4 |         65 |
           1 |  fruit      |           4 |           3 |          7 |
           3 |  fruit      |           7 |           5 |         36 |
    ----------------------------------------------------------------
    C'est à dire grouper 2 par 2 les lignes, en faisant un "total"
    En espérant que certains ai suivi, et qu'ils puissent m'aiguiller
    Merci bien !
    Ciao

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Je ne suis pas sûr que le point technique crucial soit dans l'appel ajax ici... l'appel sera des plus simples, mais c'est du côté SQL que la requête va changer, afin de trier les données en fonction de la demande de l'utilisateur.

    Je suppose bien qu'on peut quand même faire ça côté client en javascript si c'était nécessaire, mais ça doit être plus lent (en plus d'être probablement assez complexe en manipulant le DOM pour ce genre de choses).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Par défaut
    Salut et merci de ta réponse ultra rapide !
    Alors en fait j'ai oublié de préciser : à l'origine mes données dans la base mysql sont déja groupées (+- le 3e bloc "code" de mon topic), donc ma requête dans les 2 cas sera la même.

    C'est là qu'intervient ajax qui me servira à reconstruire l'un ou l'autre des 2 tableaux (groupés ou non) selon le choix de l'utilisateur.

    Et c'est là que ça se gate un peu de mon côté

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Je pense qu'il y a une approche CSS relativement simple à ton
    problème, voici l'idée avec ici les colonnes Prix fruit1, Prix fruit2
    pour simplifier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <table class='double'>
    <tr class='first'>
      <td>5</td>
      <td><span class='a'>-</span><span class='b'>2</span></td>
    </tr>
    <tr class='second'>
      <td>-</td>
      <td>2</td>
    </tr>
    </table>
    En css

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    table.double tr.first span.a { display: inline; }
    table.double tr.first span.b { display: none; }
    table.single tr.first span.a { display: none; }
    table.single tr.first span.b { display: inline; }
    table.single tr.second { display: none; }
    l'idée est qu'en appliquant une class='single' à ta table cela
    suffise à changer la présentation.

    Mais pour cela il faut coder les informations contenues dans les
    "deuxièmes lignes" à l'intérieur de la première ligne (masquée par
    le CSS en mode 'double'

    Une autre approche plus propre mais plus compliquée serait de
    construire la table dynamiquement sur la base de données pures

    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
     
    var data = [
      [r1_col1,r1_col2,r1_col3,r1_col4],
      [r2_col1,r2_col2,r2_col3,r2_col4],
      [r3_col1,r3_col2,r3_col3,r3_col4]
    ];                 
     
    // dans ce goût là
    function buildTable(data) {
      var table = document.createElement('table');
      for(var row=0;row<data.length;row++) {
        var tr = document.createElement('tr');
        var cols = data[row];
        for(var col=0;col<cols.length;col++) {
          var td = document.createElement('td');
          td.innerHTML = cols[col];
          tr.appendChild(td);
        }
        table.appendChild(tr);
      }
      return table;
    }
    Te resterai a faire un fonction qui transforme le contenu
    du tableau data suivant la représentation que tu souhaite.

Discussions similaires

  1. Réponses: 9
    Dernier message: 02/06/2012, 10h37
  2. [AJAX] lier un tableau de données à une liste déroulante
    Par Sh4dow49 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/07/2008, 22h21
  3. exporter un tableau de donnée vers un document word
    Par demerzel0 dans le forum Access
    Réponses: 2
    Dernier message: 04/11/2005, 11h57
  4. Filtrer un tableau de données
    Par Yux dans le forum Langage
    Réponses: 12
    Dernier message: 13/10/2005, 22h21
  5. [Collections] Transformer un tableau de données en une chaîne
    Par NATHW dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/06/2004, 16h44

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