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 :

tableau multidimensionnel


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut tableau multidimensionnel
    Bonjour,

    Je m'arrache les cheveux depuis 2 jours sur un probleme.
    C'est assez complexe mais je vais essayer de faire simple...

    Je n'arrive pas à récupérer en javascript les données d'un tableau issu de php.
    Ce tableau est un tableau 2D correspondant aux données d'une année et d'un mois donnés.
    exemple php :

    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
     
    $this->data[2009][1]=1;
    $this->data[2009][2]=2;
    $this->data[2009][3]=2;
    $this->data[2009][4]=1;
    $this->data[2009][5]=2;
    $this->data[2009][6]=1;
    $this->data[2009][7]=1;
    etc...
     
    $this->data[2010][1]=2;
    $this->data[2010][2]=1;
    $this->data[2010][3]=1;
    $this->data[2010][4]=2;
    $this->data[2010][5]=1;
    $this->data[2010][6]=2;
    $this->data[2010][7]=2;
    etc...
    J'arrive à le déclarer en javascript avec une boucle php qui donne :

    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
     
    var Data = new Array(2,12);
    Data[2009,1]=1;
    Data[2009,2]=2;
    Data[2009,3]=2;
    Data[2009,4]=1;
    Data[2009,5]=2;
    Data[2009,6]=1;
    Data[2009,7]=1;
    Data[2010,1]=2;
    Data[2010,2]=1;
    Data[2010,3]=1;
    Data[2010,4]=2;
    Data[2010,5]=1;
    Data[2010,6]=2;
    Data[2010,7]=2;
    mais quand j'essaie de récupérer ces valeurs ben je n'y arrive pas...
    Je souligne que je souhaite récupérer les valeurs d'une année donnée. Cette année est passée dans la fonction par une variable "annee".
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var data_janvier=Data[annee,1];
    ne marche pas....

    Voilà, j'espère avoir été clair...

    HELP !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    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
    var Data = New Array();
    Data[2009]=new Array();
    Data[2009][1]=1;
    Data[2009][2]=2;
    Data[2009][3]=2;
    Data[2009][4]=1;
    Data[2009][5]=2;
    Data[2009][6]=1;
    Data[2009][7]=1;
    Data[2010]=new Array()
    Data[2010][1]=2;
    Data[2010][2]=1;
    Data[2010][3]=1;
    Data[2010][4]=2;
    Data[2010][5]=1;
    Data[2010][6]=2;
    Data[2010][7]=2;
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Salut,
    par curiosité, elle vient d’où cette syntaxe ? Tu travaillais avec quel langage avant ?

    Paske là ça fait pas du tout ce que tu crois. JavaScript est presque plus permissif que PHP (et c’est dire…), et les warnings de JavaScript sont difficilement visibles en général, ce qui n’arrange rien.

    Je vais un peu sortir du sujet, mais je te conseille d’utiliser des outils de déboguage, par exemple :
    – sous Firefox, le module Firebug
    – sous IE8, les outils intégrés (touche F12)
    – sous Opera et Chrome, les outils intégrés également (Maj+Ctrl+I).


    En l’occurence, y’a pas mal de problèmes. D’abord, quand tu crées ton tableau :
    JavaScript initialise un tableau à 1 dimension (toujours), de longueur 2, contenant 2 et 12.

    En JavaScript, les tableaux sont à longueur variable, comme en PHP.

    Ensuite, il faut savoir que la virgule en JavaScript est considérée comme un séparateur dans les expressions (un peu comme le point-virgule). De plus, entre les crochets, on peut mettre n’importe quelle expression, elle sera évaluée avant de servir d’index pour le tableau. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var tab = [4, 7, 15, 1];
    alert(tab[7 - 5]);
    // affiche 15 (résultat de tab[2])
    Dans ton cas, quand l’exéctueur analyse « Data[2009,1] », il voit l’expression 2009,1 avec la fameuse virgule, et il considère ça comme deux expressions. Il ne gardera que la valeur de la dernière expression analysée…
    Donc « Data[2009,1] » est équivalent à « Data[1] ».


    Les tableaux multi-dimensionnels en JavaScript sont en réalité comme en PHP, des tableaux à une dimension dont les éléments sont eux-mêmes des tableaux. C’est donc plus une simulation qu’un réel mécanisme de multi-dimension comme en Java.

    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var Data = new Array();
    Data[2009] = new Array();
    Data[2010] = new Array();
     
    Data[2009][1] = 1;
    Data[2009][2] = 2;
    Data[2009][3] = 2;
    // etc.
     
    Data[2010][1] = 2;
    Data[2010][2] = 1;
    // etc.
    Le problème, c’est la longueur du tableau : la propriété length est basée sur le plus grand index utilisé, et pas réellement le nombre d’éléments. Ainsi, Data.length est ici égale à 2011.

    La longueur n’est pas réellement 2011, sinon bonjour la consommation de mémoire, mais fais attention à ce détail quand tu fais des boucles for…
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Merci !
    Désolé, je suis vraiment une $*%! en javascript !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/12/2005, 14h41
  2. Réponses: 2
    Dernier message: 27/11/2005, 23h36
  3. Nombre de dimensions d'un tableau multidimensionnel
    Par Bruno75 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/07/2005, 10h03
  4. type de donnée tableau multidimensionnel
    Par opheliegomes dans le forum Débuter
    Réponses: 2
    Dernier message: 03/02/2005, 12h29
  5. [langage] tableau multidimensionnel
    Par totox17 dans le forum Langage
    Réponses: 3
    Dernier message: 03/12/2002, 15h58

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